In una recente discussione qualcuno ha menzionato il seguente schema di hashing:
passHash = sha256(password)
saltedHash = sha256(passHash+passHash.substr(-10)
finalHash = sha256(secret+saltedHash)
La password è stata sottoposta a hash, quindi è stata nuovamente cancellata con gli ultimi 10 caratteri dell'hash precedente come "salt". Alla fine viene aggiunto un segreto e tutto viene nuovamente sottoposto a hash prima che venga salvato nel database.
Quanto è sicuro questo? So che le password uguali avranno lo stesso finalHash. Ma a parte questo, quanto è male usare una parte della password con hash come sale? Avere un sale segreto in seguito aiuta? Quanto è male avere solo 3 iterazioni di sha256 invece di poche migliaia? C'è un attacco facile che dimostra che questo schema di hashing è una cazzata?