Se un sale non viene memorizzato insieme alla password hash nel database, è possibile che la password sia salata?
Chiedo perché in un sistema su cui sto lavorando c'è solo una colonna di password, ma quando ripasso il codice sembra che chiunque abbia scritto questo stia tentando di salare la password.
Da quello che ho capito, password e sali dovrebbero essere archiviati come di seguito:
email | password (hashed) | salt (not hashed)
[email protected] | de898928393a893sfe7f98s7 | S#ne3
Quindi, quando un utente si è registrato con la propria password ("froggy" nell'esempio seguente) sarebbe andata più o meno così:
//Generate salt (S#ne3 for this example)
//encrypt ("froggy" + "S#ne3")
//Save encrypted pw + salt to database AND save unencrypted salt to database
Quindi, quando l'utente ha tentato di accedere con "froggy", sarebbe andato in questo modo:
//Query database for user's record. Store this in curUser object
//Check to see if the following match: encrypt("froggy" + curUser.salt) == curUser.password
Suona bene? Se ho ragione, è sicuro assumere che le password su questo sistema non siano salate?