Sie können mehrere Hashes in Ihrer Datenbank verwenden, dies erfordert nur ein wenig zusätzlichen Aufwand. Es lohnt sich jedoch, wenn Sie der Meinung sind, dass die geringste Chance besteht, dass Sie in Zukunft weitere Formate unterstützen müssen. Ich werde oft Passworteinträge wie verwenden
{hashId} $ {salt} $ {Hash-Passwort}
Dabei ist "hashId" nur eine Zahl, die ich intern verwende, um zu erkennen, dass ich beispielsweise SHA1 mit einem bestimmten Hash-Muster verwende. "Salz" ist ein Base64-codiertes zufälliges Salz; und "Hash-Passwort" ist ein Base64-codierter Hash. Wenn Sie Hashes migrieren müssen, können Sie Personen mit einem alten Kennwortformat abfangen und sie bei der nächsten Anmeldung dazu bringen, ihr Kennwort zu ändern.
Wie andere bereits erwähnt haben, möchten Sie mit Ihren Hashes vorsichtig sein, da es einfach ist, etwas zu tun, das nicht wirklich sicher ist, z. B. ist H (Salz, Passwort) weitaus schwächer als H (Passwort, Salz), aber gleichzeitig möchten Sie es Stimmen Sie den Aufwand dafür mit dem Wert des Website-Inhalts ab. Ich werde oft H (H (Passwort, Salz), Passwort) verwenden.
Schließlich sind die Kosten für die Verwendung von Base64-codierten Kennwörtern im Vergleich zu den Vorteilen der Verwendung verschiedener Tools, die Textdaten erwarten, gering. Ja, sie sollten flexibler sein, aber sind Sie bereit, Ihrem Chef mitzuteilen, dass er sein bevorzugtes Tool von Drittanbietern nicht verwenden kann, weil Sie ein paar Bytes pro Datensatz speichern möchten? :-)
Bearbeitet, um einen weiteren Kommentar hinzuzufügen: Wenn ich absichtlich einen Algorithmus vorschlagen würde, der sogar eine Zehntelsekunde lang jedes Passwort hasht, hätte ich das Glück, einfach aus dem Büro meines Chefs gelacht zu werden. (Nicht so glücklich? Er würde etwas aufschreiben, um es bei meiner nächsten jährlichen Überprüfung zu besprechen.) Das Brennen dieser Zeit ist kein Problem, wenn Sie Dutzende oder sogar Hunderte von Benutzern haben. Wenn Sie 100.000 Benutzer ansprechen, melden sich normalerweise mehrere Personen gleichzeitig an. Sie brauchen etwas schnelles und starkes, nicht langsames und starkes. Das "aber was ist mit den Kreditkarteninformationen?" ist bestenfalls unaufrichtig, da gespeicherte Kreditkarteninformationen nicht in der Nähe Ihrer regulären Datenbank liegen sollten und von der Anwendung ohnehin verschlüsselt würden, nicht von einzelnen Benutzern.