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 man 😃

    Der 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;
    }
    

Anmelden zum Antworten