@Phoenix: Soll heissen ich erzeuge einen eindeutigen Schlüssel z.B. eine
GUID:
Username: Max Mustermann
Passwort: 12345
GUID: {D365FA88-8442-40B3-82DC-E8D0E0EB0594}
DB Passwort: 12345 + {D365FA88-8442-40B3-82DC-E8D0E0EB0594} = MD5 Hash = dc8dcfc9fd656dca9365b4f7b5fe98f9
Und sichere in der
DB das 'neue' Passwort + die
GUID:
Username: Max Mustermann
Passwort: dc8dcfc9fd656dca9365b4f7b5fe98f9
GUID: {D365FA88-8442-40B3-82DC-E8D0E0EB0594}
richtig.
Username: völlig egal!
Passwort:
12345 < Das wird NICHT gespeichert!
Random Salt:
54a4sd88asdasg54rwer7423
Hash: 62e83e4b82f0513deca5f0645f02804f < Das wird gespeichert!
Aus Sicht der Anwendung sieht das dann so aus:
1. Benutzer gibt Username und Passwort ein
2. Programm holt sich den Salt für den Benutzer aus der Datenbank
3. Programm generiert einen MD5-(oder was auch immer)-Hash mittels Passwort + Salt (im oberen Fall also
1234554a4sd88asdasg54rwer7423 = 62e83e4b82f0513deca5f0645f02804f)
4. Programm (oder Datenbank) prüft, ob der generierte Hash mit dem Hash aus der Datenbank übereinstimmt
Will man das System noch verbessern, kann man das Passwort mehrmals salzen (z.B. Salt + Password + md5(Salt))