Jeg har passord for brukerkontoer lagret i en database ved hjelp av en usikker (gammel) kryptografisk hashfunksjon.
Hva er den beste / vanlige metoden for å endre passordhash-funksjon? Bare to ideer kommer til å tenke meg:
-
Be alle brukere om å endre passordene ved neste innlogging og hash passordene sine med ny funksjon når de gjør det. Dette er ikke et godt alternativ på grunn av mange problemer (inaktive brukere, lang migreringsperiode, komplisert implementering ...)
-
Hash de gamle hashverdiene med ny hash-funksjon, og re -skrive metoden for å sjekke passord mot database: newHash (salt + oldHash (salt + passord))
Denne doble hashingen virker for meg som en god idé, både elegant og enkel å implementere.
Jeg vil gjerne vite om det er noen advarsler jeg ikke legger merke til her. Er dette slik dette vanligvis gjøres, eller er det en annen metode? Er det noe kjent kryptografisk sårbarhet ved bruk av output med svak hashfunksjon som input for sterk hashfunksjon.
Hvis det er en god idé, hva med salt? Ville det være greit å bruke det samme saltet til begge hasjfunksjonene?