C++ Passwortvergleich & Dateien abspeichern

iJerkface

Lieutenant
Registriert
März 2012
Beiträge
665
Guten Tag ,
ich lerne z.Z immernóch C++ und ich möchte ein eigenes Programm schreiben , indem ich z.B. meine Kontaktdaten eingebe , und diese dann in einer Datei gespeichert werden , damit ich sie beim nächsten Programmstart wieder abrufen kann.

Kann mir dazu jemand einen kommentierten Beispielcode schreiben? Ich verstehs nämlich nirgendswo :D

Damit die gespeicherten Dateien im Programm sicher sind , möchte ich sie mit einem Passwort schützen lassen.

Wie kann ich einen in der Datei als Passwort abgespeicherten String mit dem als Passwort eingegebenem String vergleichen?

Also
im Prinzip if(gespeichertesPasswort!=Eingabe) cout << "Passwort falsch!" << endl;

Mit freundlichen Grüßen ,

iJerkface
 
Passwörter werden NIE abgespeichert. NIE. NIE. GAR NIE. Unter keinen wie auch immer gearteten Umständen. NIEMALS.

Was gespeichert wird ist ein Hash (SHA512, kein MD5 mehr) des Passworts. Wenn der Benutzer das Passwort eingibt, wird es wieder gehasht und dann dieser neue Hash mit dem gespeicherten verglichen. Sind sie gleich, dann war das Passwort richtig, sind sie nicht gleich dann war es falsch. Dann gibt es noch Dinge wie ein Salt um dieses Verfahren noch sicherer zu machen.
Zur Lektüre was ein Hash ist: http://de.wikipedia.org/wiki/Hashfunktion http://de.wikipedia.org/wiki/Sha512
 
Also wenn du schon bei normaler Dateiarbeit Probleme hast, dann solltest du vielleicht erstmal da ansetzen bevor du dich an Verschlüsselung wagst.

Und falls du es dringend brauchst gibt es sicher auch Freeware oder ähnliches dafür.

Für die Verschlüsselung könnte man sich die OpenSSL-Bibliothek anschauen, aber da ist nochmal ne ganze Ecke mehr zu beachten als bei normaler Dateiarbeit.
 
Da hat Mumpitzelchen schon recht, Passwörter sollten nie im Klartext gespeichert werden. (Es gibt aber viele, die es machen :/ )

Dazu weiter, wir sind hier kein Hausaufgaben-Forum und schreiben dir hier fertigen Code. Eigentlich ist das doch recht simpel, schau mal nach, wie man in C++ Dateien liest und schreibt und sicher gibt es schon fertige Bibliotheken oder Beispielimplementationen verschiedener Verschlüsselungen.
Das musst du nur kombinieren und fertig.
 
Zuletzt bearbeitet: (Ein ,s' zuviel)
Ok , ich wollte den Code nur weil ich mit Beispielen meistens besser arbeiten kann bzw. es verstehen kann :)
Trotzdem danke :)

Kann man denn die Passwörter nicht auch enthashen? Dann bringts ja garnichts :D
 
iJerkface schrieb:
Kann man denn die Passwörter nicht auch enthashen? Dann bringts ja garnichts :D

Kann man natürlich (BruteForce), die Frage ist nur, wie schnell.
Verwendest du heutige hohe Standards, dann dauert es schon nen paar Jährchen ( :D ), bleibt aber trotzdem für den Angreifer eine Kosten-Nutzen-Frage.

Wer nicht weiß, was in der Datei steckt, verbringt keine Jahre damit es herauszufinden.
 
Mumpitzelchen schrieb:
Passwörter werden NIE abgespeichert. NIE. NIE. GAR NIE. Unter keinen wie auch immer gearteten Umständen. NIEMALS.

doch, DOCH DOCH DOCH doch!

z.b. speichert ein mail client dein password plain um es an den server zu senden, wenn du auf "mails checken" klickst ;)

aber der authentifizierungsendpunkt (z.b. eben der mailserver) speichert das passwort nicht sondern wie du sagtest nur einen hash davon.

oder anders: zum vergleichen einer passwort-eingabe wird diese nie mit (d.h. sollte man nie) einem gespeicherten passwort machen sondern nur mit einem gespeicherten cryptorgaphischen hash des original passwortes.
 
Dese schrieb:
doch, DOCH DOCH DOCH doch!

z.b. speichert ein mail client dein password plain um es an den server zu senden, wenn du auf "mails checken" klickst ;)

aber der authentifizierungsendpunkt (z.b. eben der mailserver) speichert das passwort nicht sondern wie du sagtest nur einen hash davon.

oder anders: zum vergleichen einer passwort-eingabe wird diese nie mit (d.h. sollte man nie) einem gespeicherten passwort machen sondern nur mit einem gespeicherten cryptorgaphischen hash des original passwortes.

Also mein Mailclient macht das ja nicht. :)
 
Zurück
Oben