Contexte Sie müssen nie ... wirklich ... das Passwort des Benutzers kennen. Sie wollen nur überprüfen, ob ein neuer Benutzer das Passwort für ein Konto kennt.
Hash It: Speichern Sie Benutzerpasswörter mit einer starken Hash-Funktion (Einwegverschlüsselung). Eine Suche nach "c# encrypt passwords" liefert eine Vielzahl von Beispielen.
Siehe die Online SHA1-Hash-Erstellung um eine Vorstellung davon zu bekommen, was eine Hash-Funktion erzeugt (verwenden Sie aber nicht SHA1 als Hash-Funktion, sondern etwas Stärkeres wie SHA256).
Ein gehashtes Kennwort bedeutet, dass Sie (und Datenbankdiebe) nicht in der Lage sein sollten, den Hash in das ursprüngliche Kennwort zurückzuverwandeln.
Wie man es benutzt: Aber, so fragen Sie sich, wie verwende ich dieses in der Datenbank gespeicherte zusammengesetzte Passwort?
Wenn sich der Benutzer anmeldet, übergibt er Ihnen den Benutzernamen und das Passwort (im Originaltext) Sie verwenden einfach denselben Hash-Code, um das eingegebene Kennwort zu hacken und die gespeicherte Version zu erhalten.
Vergleichen Sie also die beiden gehashten Kennwörter (Datenbank-Hash für den Benutzernamen und das eingegebene und gehashte Kennwort). Durch den Vergleich der Hashes können Sie feststellen, ob das eingegebene Kennwort mit dem Kennwort des ursprünglichen Benutzers übereinstimmt.
Extra Kredit:
Frage: Wenn ich Ihre Datenbank hätte, könnte ich dann nicht einfach einen Cracker wie John the Ripper nehmen und anfangen, Hashes zu erstellen, bis ich Übereinstimmungen mit Ihren gespeicherten, gehashten Passwörtern finde? (da die Benutzer ohnehin kurze Wörter aus dem Wörterbuch wählen ... sollte es einfach sein)
Antwort: Ja ... das können sie.
Daher sollten Sie Ihre Passwörter "salzen". Siehe die Wikipedia-Artikel über Salz
Voir "Wie man Daten mit Salt hasht" C# Beispiel (archiviert)