Includere i dati di input nello stiramento delle chiavi?

1

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.

    
posta Gras Double 26.12.2016 - 13:50
fonte

1 risposta

1

using bcrypt without salt/pepper is a bit complex for my case

Utilizza bcrypt con il parametro cost specificato per lo stiramento delle chiavi, esempi nel documento ufficiale: link

password_hash("unsalted password", PASSWORD_BCRYPT, ["cost" => $cost]);

È più complesso? Io non la penso così

Nota a margine: tutte le versioni di PHP in cui password_hash è supportata, hanno la generazione automatica di sale abilitata per impostazione predefinita. Se non usi PHP7, puoi specificare il tuo (parametro salt nella matrice) ma non vedo il punto di farlo.

    
risposta data 28.12.2016 - 13:39
fonte

Leggi altre domande sui tag