Zum Inhalt springen

Passworteingabe mit * darstellen


thekbrothers

Empfohlene Beiträge

Hallo!

Ich brauche für ein Programm in C eine Benutzeranmeldung.

Für den User habe ich das Array user[16], dass somit 15 Zeichen + '\0'-Zeichen fassen kann. Das selbe habe ich als Array passwort[16].

Ich möchte nun eben bei der Eingabe des Passworts in das Array die Ausgabe "verschlüsseln", in dem ich für jedes eingegebene Zeichen ein * ausgebe.

Kann mir jmd. helfen, büdde!

Mit was für ner Art Schleife muss ich das Lösen? Wie löse ich das mit dem *? Kann ich stringweise einlesen oder zeichenweise?

Die IDE ist eine Borland C++ Builder Version 5.x

Reichen die Angabe oder braucht ihr einen Code?

MfG

Stefan

Link zu diesem Kommentar
Auf anderen Seiten teilen


   puts("\n\n\nBitte anmelden!");

   puts("\n---------------");

   printf("\n\nUser: ");

   gets(user);

   password = getpass("Passwort: ");

   strcpy(password,passwort);

So sieht jetzt der Code aus.

Ich möchte jetzt schauen, ob der User / das Passwort stimmen (es gibt nur ein User). Wo hinterlege ich den User / das Passwort, damit ich drauf zugreifen kann?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Z.B. in einer Datei oder Datenbank. Je nachdem wie sicher das ganze sein soll, solltest du diese verschlüsseln.

Du könntest den Benutzernamen in Klartext in die Datei schreiben. Bei Passwörten bildet man für gewöhnlich eine Prüfsumme (z.B. MD5). Dabei wird ein Algorithmus auf das Passwort angewendet welcher einen Wert liefert (bei MD5 ein 32 Byte Wert). Dieser Algorithmus liefert mit der selben Eingabe immer die selbe Ausgabe. Man kann die Ausgabe aber nicht mehr in die Eingabe zurück wandeln.

Du würdest also die Prüfsumme des Passworts zu dem jeweiligen Benutzer in der Datei speichern und wenn der Benutzer sein Passwort eingibt dann generierst du die Prüfsumme der Eingabe und vergleichst sie mit der in der Datei.

Link zu diesem Kommentar
Auf anderen Seiten teilen

das ganze soll aber nur was ganz rudimentäres sein ohne db und ohne verschlüsselung.

kannst du mir ma nen code posten, wie ich das hinkriege, nachdem ich mit getpass() des passwort eingelesen habe und dann auf das vorhandene passwort, meinetwegen "test" vergleichen kann.

der vergleich mit dem user per if abfrage funktioniert. nur des mit dem passwort geht net.

ich komm einfach net weiter und hab davon nicht so viel ahnung. ist meine erste benutzeranmeldung, die ich progge.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi thekbrothers,

zwei strings (char-Array) kann man mit der strcmp() Funktion vergleichen. Hier hab ich dir mal einen einfachen Ansatz zur Passworteingabe erstellt:


#include <stdio.h>
#include <string.h>
#include <conio.h>

#define PASSWORD_LENGTH 16

int getpass(char* hint, char* pass)
{
int ch;
int index=0;

if (hint)
printf("\n%s ",hint);

do
{
ch = getch();
switch(ch)
{
case 13: //Enter
break;
case 8: //Delete
break;
default:
pass[index]=ch;
index++;
printf("*");
}
} while (ch != 13 && index<PASSWORD_LENGTH);

pass[index]=0;

return strlen(pass);
}

int main(int argc, char* argv[])
{
char user[16+1];
char password[PASSWORD_LENGTH+1];
int bPasswordOK = 0;

printf("\n\n\nBitte anmelden!");
printf("\n---------------");
printf("\n\nUser: ");
gets(user);

do
{
getpass("Passwort: ",password);
if (strcmp(password,"Test")==0)
{
bPasswordOK = 1;
}
} while (bPasswordOK==0);

return 0;
}
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

sehe ich richtig, dass ich für das passwort "test" auch n array nehmen kann, in dem das gespeichert ist?

ja, genau richtig erkannt!

Entweder:


char* myPassword = "geheim";
...
if (strcmp(password,myPassword)==0)
{
bPasswordOK = 1;
}
...
[/PHP]

oder:

[PHP]
char myPassword[PASSWORD_LENGTH+1];
...
strcpy(myPassword,"geheim");
...
if (strcmp(password,myPassword)==0)
{
bPasswordOK = 1;
}
...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...