Hallo liebe Community, ich arbeite mit C++ und würde gerne eine Passwortabfrage für ein Programm haben. ?

... komplette Frage anzeigen

1 Antwort

Was genau meinst du damit, das Passwort zu sicher? Irgendwo musst du das Passwort ja schon haben, um es vergleichen zu können.

Es kommt ein bisschen drauf an, wie ernst dir die Sicherheit ist. Wenn das Programm nur für den Hausgebrauch gedacht ist, kannst du wohl das Passwort einfach irgendwo im Programm ablegen. Dann kannst dus aber nicht mehr ändern. Alternativ könntest dus aus einer Datei auslesen.

In beiden Fällen ist es -- wenn du mehr Sicherheit brauchst -- ungeschickt, dass Passwort irgendwo für jeden lesbar zu haben. Selbst wenn dus in den Code schreibst und den kompilierst kann man da noch drankommen.

Eine Lösung dafür sind Hash-Funktionen. Falls dir das nicht sagt: Wenn du einen String hasht, kommt da ein anderer String mit einem Chaos an Zahlen und Buchstaben raus. Der Witz daran ist, dass du aus dem kreierten Hash nicht mehr das originale Passwort rausbekommst.

Du kannst also den Hash deinen Passworts irgendwo speichern; den darf auch jeder sehen, weil man dadurch nicht an das Passwort kommen kann. Um das Passwort zu überprüfen, hasht du die Passworteingabe und guckst, ob der gleiche Hash rauskommt -- das ist nämlich nur der Fall, wenn das eingegebene Passwort das richtige ist.

Falls du irgendwann mal richtige sichere Programme schreibst, ist diese Vorangehensweise vielleicht nicht mehr perfekt, aber für den Hausgebrauch auf jeden Fall ausreichend.

Ich hoffe, ich konnte etwas helfen, sonst stehe ich gerne noch bereit :-)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von emih37
12.08.2016, 18:07

Erstmal danke für die lange Erklärung :)
Momentan ist es noch recht provisorisch etwa so geregelt:

cin >> string;

if(string == " /* das Passwort */ "){

...}

Ich benutze das Programm als Grundgerüst und baue es immer weiter mit meinem Gelernten aus; das vielleicht als kleine Erklärung am Rande.

Ein Gedanke der aufkam war, den String in der if-Funktion nicht gleich mit dem Passwort als solches abzugleichen, sondern mit dem Passwort als String, der zuvor in einer privaten Klasse definiert wurde. Jedoch wüsste ich nicht, ob dies etwas zur erhöhten Sicherheit beitragen würde...

Kannst du mir vielleicht ein paar Quellen geben, aus denen ich etwas zum Umgang mit Hashes (in C++) lernen kann? Ich weiß, was ein Hash ist, ich hab auch mal etwas über salted Hashes gelesen, aber das war eher im Kontext von Hacks auf Userdatenbanken von Großkonzernen.

Danke im Voraus! LG

0

Was möchtest Du wissen?