Hi,
Richtig, genau darauf wollte ich eben hinaus - wenn man sich an eine Schnittstelle halten muss, die verlangt dass das Passwort "sicher" in einer bestimmten Form abgelegt wird, kann man eben nicht einfach mal das Hash-Verfahren ändern ohne alle bisherigen Passwörter unbrauchbar zu machen.
Innerhalb eines bestehenden Systems kann man die Umstellung aber auch „live“ durchführen, ohne den Nutzer damit zu belästigen.
Zur alten Spalte, die alteHashFunktion(passwort+salt) enthält, legt man eine weitere an, in der neueHashFunktion(passwort+salt) abgelegt wird.
Wenn der Nutzer sich einloggt, und in der neuen Spalte noch kein Passwort-Hash eingetragen ist, dann vergleicht man alteHashFunktion(passwort+salt) mit dem alten Hash. Ist der Vergleich erfolgreich, hat sich der Nutzer also erfolgreich authentifiziert, dann trägt man neueHashFunktion(passwort+salt) in die zugehörige Spalte ein, und verwendet künftig das zum Vergleich. Der alte Passwort-Hash wird dann gelöscht.
Alle Nutzer, die sich regelmäßig einloggen, haben damit nach einer gewissen Zeitspanne nur noch den neuen Passwort-Hash in der DB.
Die paar, die nicht dazu gehören, kann man dann zu dem Zeitpunkt, wo man den alten Hash entgültig entsorgen will, noch mal gesondert anschreiben - die kriegen dann bspw. einen Link geschickt, mit dem sie ihren Account wieder reaktivieren, und dabei ein neues Passwort eingeben können.
MfG ChrisB
“Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]