open_ssl_random_pseudo_bytes è un generatore di numeri pseudo casuali (CSPRNG) crittograficamente sicuro .
In parole povere, ciò significa che può generare una sequenza imprevedibile e uniformemente distribuita, adatta per la generazione di chiavi. La proprietà imprevedibile è importante, perché anche se è noto lo stato completo del generatore di numeri casuali, un utente malintenzionato non può ricreare sequenze generate in precedenza e non è possibile per un osservatore esterno indovinare lo stato per prevedere le sequenze future.
Questo è in contrasto con un generatore di numeri casuali che prende il seme dal numero di secondi dopo la mezzanotte e genera sequenze prevedibili basate su questo seme. In questo caso, un utente malintenzionato può semplicemente impostare il proprio sistema per generare numeri utilizzando lo stesso seme e può effettivamente indovinare i valori dei token per poterli utilizzare per i propri scopi nefandi.
64 byte ti daranno 512 bit di entropia. Poiché MD5 emette hash di 128 bit, non vi è alcun vantaggio che l'entropia generata sia maggiore di 128. Se il codice viene eseguito un miliardo di volte, esiste una probabilità statisticamente probabile che sia sempre univoco perché si dispone di uno spazio chiave di output di 2 128 (3.4 * 10 38 ). La velocità di collisione di MD5 è di circa 2 64 che è di circa 18 miliardi di miliardi.