Unter Salzen versteht man das Hinzufügen einer zufällig gewählten Zeichenfolge zum Passwort,
bevor man den Hash-Wert berechnet. Ein Salz (Salt) sollte mindestens 20 Zeichen lang sein.
$hash = SHA256($passwort + "k32duem01vZsQ2lB8g0s");
Natürlich muss nun das Salt ebenfalls in der Datenbank gespeichert werden, damit wir beim Login
wieder dasselbe Salt zum Prüfen verwenden können. Das Salt muss aber nicht geheim
sein, es kann als Klartext gespeichert werden.
- Ein Salt verhindert, dass der Hashwert einfach gegoogelt werden kann. Eine Rainbow-table müsste
erst für genau dieses Salt erstellt werden.
- Jedes Passwort sollte sein eigenes, möglichst einzigartiges Salt bekommen.
Dadurch muss ein Angreifer eine Rainbow-table pro Passwort erstellen, und kann nicht mit einer
einzelnen Rainbow-table alle Passwörter ermitteln. Niemand erstellt eine Rainbow-table für ein
einzelnes Passwort, nach dem Finden einer Übereinstimmung macht das Weiterfahren keinen Sinn.