Dipende da cosa intendi per "leggibile". Se vuoi usare solo caratteri esadecimali, te ne serviranno 32 per raggiungere 128 bit di entropia; questa riga funzionerà (usando solo i comandi del coreutils
pacchetto):
head -c16 /dev/urandom | md5sum
Questa variante produce password con solo lettere minuscole, da 'a' a 'p' (questo è quello che vorrai se devi "digitare" la password su uno smartphone):
head -c16 /dev/urandom | md5sum | tr 0-9 g-p
Se vuoi digitare un carattere in meno, prova questo:
head -16 /dev/urandom | md5sum
(La probabilità di ottenere tutti i primi 16 byte casuali come 0x0A, ovvero il carattere "nuova riga", è 2, quindi questa riga riceve ancora 128 bit di entropia.)
Limitandoti ancora ai comandi da coreutils
, puoi farlo:
mktemp -u XXXXXXXXXXXXXXXXXXXXXX
Questo genera una password di 22 caratteri, utilizzando /dev/urandom
come fonte interna di casualità (ho controllato nel codice sorgente e un strace
conferma chiamata). I caratteri sono lettere (maiuscole e minuscole) e cifre; poiché 62 è maggiore di 2, i 22 caratteri sono sufficienti.
Ancora un altro:
od -An -x /dev/urandom | head -1
questo visualizza otto sequenze di quattro cifre esadecimali. Probabilmente, questa suddivisione in piccole sequenze può aiutare la lettura.
Per una riga molto più lunga e un tipo di password abbastanza distinto, prova questo:
for i in {1..8} ; do head -$(expr $(head -c7 /dev/urandom | od -An -t dL) % $(wc -l < /usr/share/dict/british-english)) /usr/share/dict/british-english | tail -1 ; done
(questo funziona solo su un host a 64 bit; noterai perché?). A parte coreutils
, quella versione richiede anche un file dizionario, qui quello per l'inglese britannico.
Alcuni suggerimenti favolosi nelle altre risposte. Trovo che makepasswd non sia disponibile ovunque, e usare tr è (leggermente) complicato, quindi c'è un'altra opzione che usa OpenSSL:
openssl rand -base64 16
Il numero è il numero di byte di casualità, quindi 16 byte per 128 bit di entropia.
Utilizzando pwgen
La battuta più semplice di sempre:
pwgen
Tenta di creare password facili da ricordare. Per disabilitarlo e creare password più sicure, usa il --secure
o -s
bandiera.
pwgen -s
Le password generate sono troppo lunghe? Troppo corta? Basta aggiungere la lunghezza desiderata:
pwgen 9
# Or
pwgen -s 9
# Or
pwgen 9 -s
Strumenti simili
Mi capita di conoscere pwgen, ci sono altri strumenti là fuori. Puoi trovarli usando la funzione di ricerca dalla tua distribuzione. In Debian questo è:
apt-cache search password generator
Esegue una ricerca esatta (sebbene senza distinzione tra maiuscole e minuscole). Usando password generat
invece amplia la ricerca.
Prima di installare il pacchetto può essere utile visionarne la descrizione. Di nuovo in Debian:
apt-cache show $DESIRED_PACKAGE
# E.g.
apt-cache show pwgen
Strumenti che potrei trovare in questo modo:
pwgen
makepasswd
apg
otp
(pensato per pastiglie monouso, non consigliato)gpw
(si concentra fortemente sulla pronunciabilità, sconsigliato)
Uso degli strumenti Unix standard
Non tutti i sistemi potrebbero avere pwgen disponibile. Come altri hanno risposto, puoi usare md5sum
o sha256sum
, ma restituisce solo 0-9 e a-f. Nessuna g-z o maiuscole e minuscole, per non parlare dei caratteri speciali. È meglio semplicemente filtrare i caratteri non stampabili da /dev/urandom
finché non avrai una password della lunghezza desiderata:
cat /dev/urandom | tr -cd '@-~' | head -c 8
Il che dà qualcosa come XiVsdn[y
o [email protected]^lY
. Puoi cambiare il 8
alla fine per la lunghezza della password desiderata. Puoi anche modificare il @-~
parte per limitare i caratteri. Ad esempio, questo stamperà solo caratteri alfanumerici:
cat /dev/urandom | tr -cd 'a-zA-Z0-9' | head -c 8
Questo è quasi identico a pwgen -s
farebbe e fornisce password come nZiUzNtE
.
Come bonus, il tr
è incluso in quasi tutti i sistemi operativi (Mac OS X, GNU/Linux, Android/Linux, Solaris, FreeBSD, ecc.) eccetto Microsoft Windows.