char variablen vergleichen
-
halo leuts!
ich habda ein problem.ich versuch eine passwortabfrage zu schreiben nur ich kann die eingabe nicht ueberpruefen.
#include <iostream.h> int main() { char usr_id[6]; char usr_pswd[6]; cout << "Bitte geben Sie ihren Benutzernamen ein:\t"; cin >> usr_id; cout << "Und ihr Passwort:\t"; cin >> usr_pswd; if ((usr_id == "Robin") && (usr_pswd == "hallo")) { cout << "Hallo " << usr_id << endl; } else { cout << "falsche eingebe!\n"; } return 0; }
ps: wie kann ich eine User- und Passwortliste erstellen mit der ich die daten vergleichen kann?
Danke im vorraus
3r4s3r
-
3r4s3r schrieb:
ps: wie kann ich eine User- und Passwortliste erstellen mit der ich die daten vergleichen kann?
// Abbildung von Username auf Passwort std::map<std::string, std::string> pwdlst;
p.s. Wie du siehst solltest du besser std::string verwenden. Ist einfach praktischer. Sicherer.
p.p.s. Wäre auch cool die Usernamen zu verschlüsseln, z.B. die Buchstaben durch Ziffern zu ersetzen.
-
Oder du wandelst die chars einfach in strings um.
-
3r4s3r schrieb:
...ps: wie kann ich eine User- und Passwortliste erstellen mit der ich die daten vergleichen kann?...
verschlüssele die strings (solltest du den char-arrays vorziehen) und speichere sie in eine datei. beim auslesen der datei vergleichst du die _verschlüsselten_ strings miteinander (nicht die entschlüsselten, soll doch sicher sein, oder?).
ich hab das so gelöst: username wird verschlüsselt in eine datei gespeichert, vom passwort wird eine prüfsumme gebildet. verglichen wird der verschlüsselte username und die prüfsumme des passwortes, nachteil: brauchst ein hintertürchen , denn wenn du das pw vergisst ist aus
.
-
Oder versuche das mal.
Es ist mein erstes C++ script, also etwas nachsicht.
Kann dies jemand noch bewerten?
Danke, so lernt manDer Script is not SECURITY!
#include <map> #include <string> #include <iostream> using namespace std; int main(){ string PW,USER; cout<<"Username: "; cin>>USER; cout<<"PW: "; cin>>PW; map<string, string> pwlist; //Jetzt kannst du die pw liste einlesen pwlist.insert(make_pair("Fried","@dls")); pwlist.insert(make_pair("Hansi","123")); pwlist.insert(make_pair("Rudi","sdsj2")); //eingabe pruefen und vergleichen map<string, string>::iterator pos; pos=pwlist.find(USER); if(pos!=pwlist.end()){ if(pos->second!=PW){ cout<<"PW Error\n"; return 0; }else{ cout<<"eingabe Okey\n"; } }else{ cout<<"Username Error!\n"; return 0; } return 1; }
MFG Ghost
EDIT: Schreibfehler!
EDIT: Der bloede Header, fehlte was...
EDIT: Letzter fehler behoben. Script getestet und geht.
-
Das was du da gepostet hast, ist weder C noch C++. Also wie bereits gesagt, solltest du besser std::string benutzen. Ansonsten wenn du deinen Code nicht stark verändern möchtest, ist das hier vielleicht ein Vorschlag. (Wird in C++ aber normalerweise nicht verwendet)
#include <iostream> // In C++ heißt es <iostream> #include <cstring> // Für die "C-Funktionen" mit strings using namespace std; // Im namespace std int main() { char usr_id[6]; char usr_pswd[6]; cout << "Bitte geben Sie ihren Benutzernamen ein:\t"; cin >> usr_id; cout << "Und ihr Passwort:\t"; cin >> usr_pswd; // Zum vergleichen von c-strings strcmp(char*, char*) verwenden. if (strcmp(usr_id, "Robin") == 0 && strcmp(usr_pswd, "hallo") == 0) { cout << "Hallo " << usr_id << endl; } else { cout << "falsche eingebe!\n"; } return 0; }