Während andere gut darauf hingewiesen haben, dass es nur wenige (wenn überhaupt) Vorteile gibt, würde ich Ihre Behauptung in Frage stellen, dass es keine Nachteile gibt. Wenn Sie nur den Hash-Benutzernamen speichern, ist die Suche nach dem Benutzernamen einfach. Wenn Sie einen gesalzenen, gehashten Benutzernamen speichern, wird die Suche etwas problematischer.
Nehmen wir an, wir erstellen eine SQL-Tabelle mit Benutzernamen und (gehashten) Kennwörtern und weisen den SQL Server an, die Spalte mit dem Benutzernamen zu indizieren es wird eine Art binäre Suche oder eine andere Magie durchführen. Wir könnten eine Tabelle haben, die so aussieht:
Benutzername | Passworttest | j9lnvqjAuhNJs
(Dies ist der Unix-Krypta-Hash der alten Schule (3), nur zur Vereinfachung und Kürze.)
Wenn Sie Ihre Benutzernamen im Klartext speichern, rufen Sie den ( Das Hash-Passwort für einen Benutzer ist ein einfacher SQL-Aufruf. Angenommen, Sie möchten die Anmeldeinformationen für einen Benutzer überprüfen, der den Benutzernamen test
:
eingegeben hat. Wählen Sie das Kennwort von Benutzern aus, bei denen Benutzername = 'test';
Einfach genug. Wenn wir nun die Benutzernamen im gleichen Format wie die Passwörter speichern, sieht unsere Tabelle folgendermaßen aus:
Benutzername | PasswortM1CAtvzDdJDGU | j9lnvqjAuhNJs
Wenn ein Benutzer nun seinen Benutzernamen test
eingibt, wie überprüfen Sie das Kennwort? Eine binäre Suche ist hier nutzlos, da Sie nicht einmal das Salz kennen, mit dem Sie den Benutzernamen gespeichert haben. Stattdessen müssen Sie jeden Benutzernamen in der Datenbank durchlaufen, den angegebenen Benutzernamen mit dem Salt für diesen Benutzernamen verschlüsseln und ihn mit dem gespeicherten (gehashten) Benutzernamen vergleichen, um festzustellen, ob er übereinstimmt. Youch!
Angenommen, Sie haben einige gute Vorsichtsmaßnahmen getroffen und einen schönen langsamen Hash wie bcrypt
anstelle einer guten alten Unix-Krypta verwendet? Double Youch!
Wie Sie sich vorstellen können, hat das Speichern eines gesalzenen Hash-Benutzernamens anstelle von einfachem Text einige schwerwiegende Nachteile.