Hintergrund
Sie müssen nie ... wirklich ... das Passwort des Benutzers kennen. Sie möchten nur überprüfen, ob ein eingehender Benutzer das Kennwort für ein Konto kennt.
Hash It:
Speichern von Benutzerkennwörtern (Einwegverschlüsselung) über eine starke Hash-Funktion. Eine Suche nach "c # encrypt passwords" liefert eine Vielzahl von Beispielen.
Im Online-SHA1-Hash-Ersteller finden Sie eine Vorstellung davon, was eine Hash-Funktion erzeugt (verwenden Sie SHA1 jedoch nicht als Hash-Funktion, sondern verwenden Sie etwas Stärkeres wie SHA256).
Ein Hash-Passwort bedeutet nun, dass Sie (und Datenbankdiebe) diesen Hash nicht mehr in das ursprüngliche Passwort umkehren sollten.
Wie man es benutzt:
Aber wie verwende ich dieses in der Datenbank gespeicherte Passwort?
Wenn sich der Benutzer anmeldet, erhalten Sie den Benutzernamen und das Kennwort (im Originaltext). Sie verwenden nur denselben Hash-Code, um das eingegebene Kennwort zu hashen und die gespeicherte Version abzurufen.
Vergleichen Sie also die beiden Hash-Passwörter (Datenbank-Hash für Benutzername und das eingegebene & Hash-Passwort). Sie können feststellen, ob "was sie eingegeben haben" mit "übereinstimmt, was der ursprüngliche Benutzer für sein Passwort eingegeben hat", indem Sie ihre Hashes vergleichen.
Extra Gutschrift:
Frage: Wenn ich Ihre Datenbank hätte, könnte ich dann nicht einfach einen Cracker wie John the Ripper nehmen und Hashes erstellen, bis ich Übereinstimmungen mit Ihren gespeicherten Hash-Passwörtern finde? (da Benutzer sowieso kurze Wörter aus dem Wörterbuch auswählen ... sollte es einfach sein)
Antwort: Ja ... ja, das können sie.
Sie sollten also Ihre Passwörter "salzen". Siehe den Wikipedia-Artikel über Salz
Siehe "Wie man Daten mit Salz hasht" C # -Beispiel