Sto lavorando su un sistema che hashing password utente con MD5 (senza sale). Voglio memorizzare le password in modo più sicuro utilizzando SHA-512 e un sale.Usa SHA-512 e salta all'hash una password hash MD5?
Sebbene sia abbastanza semplice da implementare per le password future, vorrei anche aggiornare le password hash MD5 esistenti, preferibilmente senza obbligare tutti gli utenti a modificare le loro password. La mia idea è di usare solo SHA-512 e un salt appropriato per cancellare l'hash MD5 esistente. Posso quindi impostare un flag nel database che indichi quali password sono state sottoposte a hash da testo semplice e quali sono state sottoposte a hash da un hash MD5. Oppure potrei provare entrambi quando autenticano gli utenti. O anche solo hash nuove password con MD5 e poi SHA-512/salt, in modo che possano essere trattate come le vecchie password.
Programmaticamente, non penso che questo sarà un problema, ma non so abbastanza di crittografia/hashing per sapere se sto compromettendo la qualità dell'hash in alcun modo applicando un SHA-512/salare hash a una password che era già hash MD5. Il mio primo istinto è che, semmai, sarebbe ancora più forte, un tasto molto leggero che si allunga.
Il mio secondo istinto è che non so davvero di cosa sto parlando, quindi farò meglio a chiedere consiglio. qualche idea?
SHA-512 offrirà pochissimi miglioramenti rispetto a MD5 (ad esempio: 'MD5 (salt + password)' è praticamente equivalente a 'SHA512 (salt + password)'). Le funzioni di hash di uso generico come MD5 e la famiglia SHA erano ** non ** costruite per memorizzare le password. Usa bcrypt. – NullUserException
Molto vero. In realtà intendevo fare stretching chiave, ma non ho chiarito questo nella mia domanda. Ho finito per usare PBKDF2 invece di implementare ingenuamente il mio algoritmo di allungamento della chiave. –