Záleží na tom, co myslíš tím "čitelný". Pokud chcete používat pouze hexadecimální znaky, budete jich potřebovat 32 k dosažení 128 bitové entropie; tento řádek bude fungovat (pomocí pouze příkazů z coreutils
balíček):
head -c16 /dev/urandom | md5sum
Tato varianta vytváří hesla pouze s malými písmeny, od „a“ do „p“ (to je to, co budete chtít, pokud musíte heslo „zadat“ na chytrém telefonu):
head -c16 /dev/urandom | md5sum | tr 0-9 g-p
Pokud chcete napsat o jeden znak méně, zkuste toto:
head -16 /dev/urandom | md5sum
(Pravděpodobnost získání všech prvních 16 náhodných bajtů jako 0x0A, tj. znak nového řádku, je 2, takže tento řádek stále získává 128 bitů entropie.)
Stále se omezujete na příkazy z coreutils
, můžete to udělat takto:
mktemp -u XXXXXXXXXXXXXXXXXXXXXX
Toto vygeneruje heslo o 22 znacích pomocí /dev/urandom
jako interní zdroj náhodnosti (zkontroloval jsem zdrojový kód a strace
hovor potvrdí). Znaky jsou písmena (velká a malá) a číslice; protože 62 je větší než 2, stačí 22 znaků.
Ještě jeden:
od -An -x /dev/urandom | head -1
toto zobrazí osm sekvencí čtyř hexadecimálních číslic. Pravděpodobně toto rozdělení do malých sekvencí může pomoci čtení.
Pro mnohem delší řádek a zcela odlišný typ hesla zkuste toto:
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
(tento funguje pouze na 64bitovém hostiteli; všimli jste si proč?). Kromě coreutils
, tato verze také vyžaduje soubor slovníku, zde ten pro britskou angličtinu.
Některé skvělé návrhy v ostatních odpovědích. Zjistil jsem, že makepasswd není k dispozici všude a použití tr je (trochu) složité, takže existuje další možnost pomocí OpenSSL:
openssl rand -base64 16
Číslo je počet bajtů náhodnosti – tedy 16 bajtů pro 128bitovou entropii.
Použití pwgen
Nejjednodušší linka všech dob:
pwgen
Snaží se vytvářet hesla, která jsou snadno zapamatovatelná. Chcete-li to zakázat a vytvořit bezpečnější hesla, použijte --secure
nebo -s
vlajka.
pwgen -s
Jsou vygenerovaná hesla příliš dlouhá? Moc krátký? Stačí připojit požadovanou délku:
pwgen 9
# Or
pwgen -s 9
# Or
pwgen 9 -s
Podobné nástroje
Jen náhodou znám pwgen, existují i jiné nástroje. Můžete je najít pomocí funkce vyhledávání z vaší distribuce. V Debianu je to:
apt-cache search password generator
Provádí přesné vyhledávání (i když bez ohledu na velikost písmen). Pomocí password generat
místo toho rozšiřuje vyhledávání.
Před instalací balíčku může být užitečné zobrazit jeho popis. Opět v Debianu:
apt-cache show $DESIRED_PACKAGE
# E.g.
apt-cache show pwgen
Nástroje, které jsem mohl najít tímto způsobem:
pwgen
makepasswd
apg
otp
(určeno pro jednorázové vložky, nedoporučuje se)gpw
(silně se zaměřuje na vyslovitelnost, nedoporučuje se)
Použití standardních unixových nástrojů
Ne všechny systémy mohou mít k dispozici pwgen. Stejně jako ostatní odpověděli, můžete použít md5sum
nebo sha256sum
, ale na výstupu jsou pouze 0-9 a a-f. Žádné g-z nebo smíšená velká a malá písmena, natož speciální znaky. Je lepší jednoduše odfiltrovat netisknutelné znaky z /dev/urandom
dokud nebudete mít heslo požadované délky:
cat /dev/urandom | tr -cd '@-~' | head -c 8
Což dává něco jako XiVsdn[y
nebo [email protected]^lY
. Můžete změnit 8
na konci pro požadovanou délku hesla. Můžete také změnit @-~
část k omezení postav. Například se vytisknou pouze alfanumerické znaky:
cat /dev/urandom | tr -cd 'a-zA-Z0-9' | head -c 8
To je téměř totožné s tím, co pwgen -s
by udělal a dává hesla jako nZiUzNtE
.
Jako bonus tr
nástroj je součástí téměř každého operačního systému (Mac OS X, GNU/Linux, Android/Linux, Solaris, FreeBSD atd.) kromě Microsoft Windows.