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 Zitieren
robotto7831a Geschrieben 22. Juni 2005 Geschrieben 22. Juni 2005 Machst Du ein Konsolenprogramm oder ein Formularprogramm? Frank Zitieren
thekbrothers Geschrieben 22. Juni 2005 Autor Geschrieben 22. Juni 2005 juhu! sorry ich vergaß zu erwähnen, dass es ein konsolenprogramm ist. mfg stefan Zitieren
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 Zitieren
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 Zitieren
thekbrothers Geschrieben 22. Juni 2005 Autor Geschrieben 22. Juni 2005 danke für den schlauen tipp. Zitieren
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? Zitieren
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. Zitieren
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. Zitieren
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] Zitieren
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 Zitieren
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; } ... Zitieren
thekbrothers Geschrieben 28. Juni 2005 Autor Geschrieben 28. Juni 2005 Danke Dir! MfG Stefan Zitieren
Empfohlene Beiträge
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.