Ich arbeite an einem System, das Benutzerpasswörter mit MD5 (kein Salz) hashing. Ich möchte die Passwörter mit SHA-512 und einem Salz sicherer speichern.Verwenden Sie SHA-512 und Salz, um ein MD5-Hash-Passwort zu hashen?
Während dies für künftige Kennwörter einfach zu implementieren ist, möchte ich auch die vorhandenen MD5-Hash-Passwörter nachrüsten, vorzugsweise ohne alle Benutzer zur Änderung ihrer Kennwörter zu zwingen. Meine Idee ist, einfach SHA-512 und ein geeignetes Salz zu verwenden, um den vorhandenen MD5-Hash zu hashen. Ich kann dann entweder ein Flag in der Datenbank setzen, das anzeigt, welche Passwörter aus reinem Text gehashed wurden und welche Hashes aus einem MD5 Hash erzeugt wurden. Oder ich könnte beides einfach ausprobieren, wenn ich Benutzer authentifiziere. Oder hacken Sie einfach neue Passwörter mit MD5 und SHA-512/salt, so dass sie wie alte Passwörter behandelt werden können.
Programmatisch denke ich nicht, dass dies ein Problem sein wird, aber ich weiß nicht genug über Verschlüsselung/Hashing, um zu wissen, ob ich die Qualität des Hash in irgendeiner Weise kompromittiere, indem ich einen SHA-512/Salz-Hash zu einem Passwort, das bereits MD5 Hashed war. Mein erster Instinkt ist, dass, wenn überhaupt, es noch stärker wäre, ein sehr leichtes Key-Stretching.
Mein zweiter Instinkt ist, dass ich nicht wirklich weiß, wovon ich rede, also sollte ich besser einen Rat bekommen. Irgendwelche Gedanken?
SHA-512 bietet gegenüber MD5 kaum Verbesserungen (zB: 'MD5 (salt + password)' ist praktisch äquivalent zu 'SHA512 (salt + password)'). Hash-Funktionen für allgemeine Zwecke wie MD5 und die SHA-Familie wurden ** nicht ** entwickelt, um Passwörter zu speichern. Verwenden Sie bcrypt. – NullUserException
Sehr wahr. Eigentlich wollte ich Key Stretching machen, aber das habe ich in meiner Frage nicht deutlich gemacht. Am Ende habe ich PBKDF2 verwendet, anstatt meinen eigenen Key-Stretching-Algorithmus naiv zu implementieren. –