Follow-up di questa domanda: strong hashing PHP senza sale .
Senza entrare nei dettagli, l'uso di bcrypt senza sale / pepe è un po 'complesso per il mio caso, quindi resto su un'implementazione "in loop".
Nella "versione 1" di seguito, sto semplicemente eseguendo ripetutamente l'hashing sha512, mentre in "versione 2" includo i dati di input in ogni iterazione:
$data = $websiteDomain . $myChildSchool . $myPetName . $etc;
// version 1
$result = $data;
for ($i = 0; $i < 1000000; ++$i) {
$result = hash('sha512', $result, true);
}
// version 2
$result = '';
for ($i = 0; $i < 1000000; ++$i) {
$result = hash('sha512', $data . $result, true);
}
$result = str_replace(['/', '+', '='], '', base64_encode($result));
$result = substr($result, 0, $passwordLength);
La "versione 2" è più sicura?
Sto pensando a cose come la parallelizzazione per la "versione 1", in cui il primo hash verrebbe normalmente calcolato, quindi i 999.999 rimanenti hash di ciascun candidato verrebbero calcolati usando qualche elaborazione parallela.