Ich habe eine alte Anwendung, die Benutzerkennwörter in der Datenbank mit einem MD5-Hash gespeichert hat. Ich möchte dies durch etwas in der SHA-2-Familie ersetzen.Wie konvertiere ich Passwort Hashing von MD5 zu SHA?
Ich habe über zwei Möglichkeiten nachgedacht, um dies zu erreichen, aber beide scheinen ziemlich klobig.
1) Fügen Sie ein boolesches "Flag" -Feld hinzu. Wenn der Benutzer sich das erste Mal danach authentifiziert, ersetzen Sie den MD5-Passwort-Hash durch den SHA-Passwort-Hash und setzen Sie das Flag. Ich kann dann die Markierung überprüfen, um zu sehen, ob der Passwort-Hashwert konvertiert wurde.
2) Fügen Sie ein zweites Passwortfeld hinzu, um den SHA-Hash zu speichern. Wenn der Benutzer sich danach das erste Mal authentifiziert, hash das Passwort mit SHA und speichern Sie es in dem neuen Feld (wahrscheinlich löschen Sie gleichzeitig ihren MD5-Hash). Dann kann ich prüfen, ob das SHA-Feld einen Wert hat; das wird im Wesentlichen meine Fahne.
In beiden Fällen muss die MD5-Authentifizierung für einige Benutzer, die sich selten anmelden, für einige Zeit bestehen bleiben. Und alle Benutzer, die nicht mehr aktiv sind, werden niemals zu SHA wechseln.
Gibt es einen besseren Weg, dies zu tun?
Ihre beiden versuchen Lösungen sehen für mich ok aus. – wtaniguchi
Und ich erhöhe Neds Antwort, er hat einen guten Punkt dort. – wtaniguchi
Wie für Benutzer, die nie geschaltet werden - ich würde in Betracht ziehen, nachdem ein bestimmter Prozentsatz von Leuten umgeschaltet worden ist und genügend Zeit vergangen ist, um nur die MD5-Hashes loszuwerden. Personen, die sich während dieser Zeit nicht eingeloggt haben, müssen ihre Passwörter zurücksetzen lassen, wenn sie sich erneut einloggen. Ob oder wann dies akzeptabel ist, ist eine geschäftliche Entscheidung. –