Hardcoded password CString
-
Hi
Ich hab in meinem Programm statisch ein Passwort, welches später mit der Eingabe vom Benutzer überprüft wird.
CString PW = "password123";
Wenn ich mein Programm jetzt mit einem ganz normalen HexEditor öffne und nach dem string "password123" suche, und diesen string mit "password321" überschreibe, ist das Passwort im Programm auch wirklich geändert und der Benutzer kann sich so Zugang mit seinem beliebig gewählten Passwort verschaffen, oder auch einfach nur das gesehene Passwort benutzen.
Meine Frage ist nun, wie kann ich das Passwort in meinem CString so speichern, dass man es nicht mit einem HexEditor später ansehen kann?
-
Gar nicht (du kannst es höchstens verschlüsselt speichern, z.B. durch Konvertierung in Zahlen oder so, aber erkennen kann es der User unter Umständen dennoch, wenn er weiß, wie).
-
Danke bloppster.
Wie kann ich es am besten so konvertiert oder verschlüsselt speichern?
-
adsfoiga schrieb:
Wie kann ich es am besten so konvertiert oder verschlüsselt speichern?
Als "verschlüsselt" würde ich ihn nicht speichern, denn brauchst du ja auch wieder einen Schlüssel um den Schlüssel zu entschlüsseln.
Man speichert i.d.R. Passwörter nicht direkt sondern lediglich deren Hashwerte. Also du erzeugst einen Hashwert deines Passwortes und speicherst diesen. Zum Überprüfen generierst du aus der Passworteingabe des Benutzers wieder einen Hashwert und vergleichst diese beiden.
-
Gute Ideee HaJo..
Jetzt stellt sich mir nur die Frage, wie ich den Hashwert des Passworts bekomme?
Und wie kann ich dann das als Hashwert gespeicherte Passwort zur Programmlaufzeit wieder "enthashen", sodass ich wieder meinen Passwort string habe?
-
enthashen ist nicht möglich, der hash ist ein fingerabdruck vom string. du kannst nur die fingerabdrücke vergleichen aber weiss nicht von wem die sind.
schau mal nach md5. ob es da was für mfc gibt weiss ich nicht. die neue MSDN suche find ich einfach zum kotzen .. ich find da nur noch .net zeugs.
-
Ah ok. Werd ich mir mal ansehen.