Occasionalmente ho bisogno di generare una password mentre lavoro sulla riga di comando di Unix. Ho il seguente alias nel mio zshrc:
alias randpass='openssl rand -base64 32 | tr -d /=+ | cut -c -30'
Questi comandi generano una stringa di 30 caratteri alfanumerici effettuando le seguenti operazioni:
- Utilizza OpenSSL per generare 32 byte di dati casuali.
- Base64: codifica il risultato.
- Rimuovi tutti i caratteri tranne lettere maiuscole, lettere minuscole e cifre.
- Troncare il risultato a 30 caratteri.
L'unico difetto che riesco a vedere è che potrebbero essere rimasti meno di 30 caratteri dopo aver rimosso le istanze di /
, =
e +
. Ovviamente, questo richiederebbe che questi tre simboli costituiscano più di un terzo dei caratteri codificati in base64, il che è fenomenalmente improbabile.
L'output di "openssl rand" è sufficientemente casuale da essere utilizzato come base per le password? C'è qualche tipo di pregiudizio introdotto da base64 che codifica i byte casuali? (Suppongo che rimuovere /
, =
e +
introduca un bias ma che questo sia piuttosto minimo.)