thekbrothers Geschrieben 22. Juni 2005 Geschrieben 22. Juni 2005 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
robotto7831a Geschrieben 22. Juni 2005 Geschrieben 22. Juni 2005 Machst Du ein Konsolenprogramm oder ein Formularprogramm? Frank
thekbrothers Geschrieben 22. Juni 2005 Autor Geschrieben 22. Juni 2005 juhu! sorry ich vergaß zu erwähnen, dass es ein konsolenprogramm ist. mfg stefan
robotto7831a Geschrieben 22. Juni 2005 Geschrieben 22. Juni 2005 Was mir auf Anhieb einfällt ist getpass. Da wird die Eingabe aber nicht auf dem Bildschirm angezeigt. Frank
Guybrush Threepwood Geschrieben 22. Juni 2005 Geschrieben 22. Juni 2005 Dann geb ich dir mal den selben Tip wie in in diesem Thread mal die Suchfunktion zu benutzten
thekbrothers Geschrieben 22. Juni 2005 Autor Geschrieben 22. Juni 2005 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?
Guybrush Threepwood Geschrieben 22. Juni 2005 Geschrieben 22. Juni 2005 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.
thekbrothers Geschrieben 23. Juni 2005 Autor Geschrieben 23. Juni 2005 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.
Manfred.Becker Geschrieben 23. Juni 2005 Geschrieben 23. Juni 2005 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]
thekbrothers Geschrieben 23. Juni 2005 Autor Geschrieben 23. Juni 2005 dank dir manfred. ich werd es gleich mal ausprobieren. sehe ich richtig, dass ich für das passwort "test" auch n array nehmen kann, in dem das gespeichert ist? mfg stefan
Manfred.Becker Geschrieben 23. Juni 2005 Geschrieben 23. Juni 2005 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; } ...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden