Lo scopo di un sale è non per rendere più lento il calcolo dell'hash, è per evitare che le tabelle arcobaleno siano utili. Una singola iterazione di SHA512 è modo troppo veloce per essere utile contro gli attacchi bruteforcing.
Su una GPU decente, puoi fare ~ 100M hash / sec ( nuovo collegamento ) con SHA512. Moltiplicalo per sistemi con più GPU. Con un KDF lento come bcrypt , puoi modificare il numero di iterazioni per essere più adatto. Vuoi qualcosa intorno a ~ 0.3s / hash per un buon margine di sicurezza.
Tenere presente che 50 byte sono 400 bit o uno spazio tasti di 2 ^ 400. Sei quasi sicuro di trovare una collisione in SHA512 se riesci a calcolare 2 ^ 400 hash. Tuttavia, l'attaccante non sta cercando di indovinare il sale. Quello di cui dovresti preoccuparti è che un attaccante rompa gli hash quando già conosce il sale.
La soluzione è usa PBKDF2, bcrypt o scrypt e < a href="https://security.stackexchange.com/questions/17421/how-to-store-salt"> salva il sale in testo semplice nel database.
Aggiornamento:
Sembra che tu stia cercando di implementare il tuo schema. Per favore non fai questo. Esistono due regole di crittografia ampiamente accettate:
- La crittografia è difficile.
- Non eseguire il rollover.
Non posso sottolineare abbastanza strong quanto sia pericoloso lanciare i propri schemi, specialmente quando si ha a che fare con la crittografia. Nemmeno il leggendario Bruce Schneier oserebbe scrivere il proprio criptosistema senza una seria revisione tra pari e mesi (se non anni) di test e modifiche.
Il consiglio che ti ho dato per quanto riguarda l'hashing è uno standard basato sulla revisione tra pari e una quantità enorme di test teorici e pratici. Tentare di aumentarlo utilizzando hashing extra e altri black-magic è una cattiva idea e aumenterà solo la superficie di attacco della tua applicazione e creerai un potenziale difetto di sicurezza. Attenersi allo standard.