Ho bisogno di un grande generatore di numeri casuali (come, ad esempio, 128-bit) in PHP. Stavo pensando di memorizzare questo numero in una stringa come esadecimale.Generazione di numeri casuali di grandi dimensioni
Si noti che questo è pensato per un sistema di login che menzionato la necessità di un numero "casuale", in modo da sto indovinando io davvero bisogno di essere "random-basta" (perché so pseudo-casuale è mai veramente casuale).
L'algoritmo che stavo pensando stava generando la cifra esadecimale numero uno alla volta, quindi concatenando tutto. Come questo:
$random = '';
for ($i = 0; $i < 32; ++$i) {
$digit = rand(0, 15);
$random .= ($digit < 10 ? $digit : ($digit - 10 + 'a'));
}
return $random;
Posso fidarmi di questa funzione per restituire buoni numeri pseudo-casuali o sto scherzi con qualcosa che in realtà non dovrebbe?
Perché non basta sostituire $ sale di rand()? Non sarebbe ugualmente casuale? Diamine, probabilmente ancora più casuale. – luiscubal
è vero, ma l'utilizzo di rand() negherà la possibilità di confrontare l'hash previsto, se si desidera farlo. PER ESEMPIO.in situazioni di password, spesso si hash la password degli utenti con un salt - quindi poiché presumibilmente sei l'unico a conoscere il sale, puoi confrontare l'hash che hai registrato nel DB per quell'utente con il "previsto" hash ", e puoi verificare che sia corretto. – julio