Cela dépend de ce que vous entendez par "lisible". Si vous souhaitez n'utiliser que des caractères hexadécimaux, vous en aurez besoin de 32 pour atteindre 128 bits d'entropie; cette ligne fonctionnera (en utilisant uniquement les commandes du coreutils
paquet):
head -c16 /dev/urandom | md5sum
Cette variante produit des mots de passe avec uniquement des lettres minuscules, de 'a' à 'p' (c'est ce que vous voudrez si vous devez "taper" le mot de passe sur un smartphone) :
head -c16 /dev/urandom | md5sum | tr 0-9 g-p
Si vous voulez saisir un caractère de moins, essayez ceci :
head -16 /dev/urandom | md5sum
(La probabilité d'obtenir tous les 16 premiers octets aléatoires sous la forme 0x0A, c'est-à-dire le caractère "nouvelle ligne", est de 2, donc cette ligne reçoit toujours 128 bits d'entropie.)
Limitez-vous toujours aux commandes de coreutils
, vous pouvez faire ceci :
mktemp -u XXXXXXXXXXXXXXXXXXXXXX
Celui-ci génère un mot de passe de 22 caractères, en utilisant /dev/urandom
comme source interne d'aléatoire (j'ai vérifié dans le code source, et un strace
appel confirme). Les caractères sont des lettres (majuscules et minuscules) et des chiffres; puisque 62 est supérieur à 2, les 22 caractères suffisent.
Encore un :
od -An -x /dev/urandom | head -1
cela affiche huit séquences de quatre chiffres hexadécimaux. On peut dire que cette division en petites séquences peut aider à la lecture.
Pour une ligne beaucoup plus longue et un type de mot de passe assez distinct, essayez ceci :
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
(celui-ci ne fonctionne que sur un hôte 64 bits; remarquerez-vous pourquoi ?). Hors coreutils
, cette version nécessite également un fichier dictionnaire, ici celui de l'anglais britannique.
Quelques suggestions fabuleuses dans les autres réponses. Je trouve que makepasswd n'est pas disponible partout, et l'utilisation de tr est (légèrement) délicate, il existe donc une autre option utilisant OpenSSL :
openssl rand -base64 16
Le nombre est le nombre d'octets d'aléatoire - donc 16 octets pour 128 bits d'entropie.
Utiliser pwgen
Le oneliner le plus simple de tous les temps :
pwgen
Il tente de créer des mots de passe faciles à retenir. Pour désactiver cela et créer des mots de passe plus sécurisés, utilisez le --secure
ou -s
drapeau.
pwgen -s
Les mots de passe générés sont-ils trop longs ? Trop court? Ajoutez simplement la longueur souhaitée :
pwgen 9
# Or
pwgen -s 9
# Or
pwgen 9 -s
Outils similaires
Il se trouve que je connais pwgen, il existe d'autres outils. Vous pouvez les trouver en utilisant la fonction de recherche de votre distribution. Dans Debian, c'est :
apt-cache search password generator
Il effectue une recherche exacte (mais insensible à la casse). Utilisation de password generat
élargit plutôt la recherche.
Avant d'installer le package, il peut être utile de consulter sa description. Toujours dans Debian :
apt-cache show $DESIRED_PACKAGE
# E.g.
apt-cache show pwgen
Outils que j'ai pu trouver de cette façon :
pwgen
makepasswd
apg
otp
(destiné aux tampons à usage unique, non recommandé)gpw
(se concentre fortement sur la prononciation, non recommandé)
Utilisation des outils Unix standard
Tous les systèmes peuvent ne pas avoir pwgen disponible. Comme d'autres l'ont répondu, vous pouvez utiliser md5sum
ou sha256sum
, mais cela ne produit que 0-9 et a-f. Pas de g-z ou de casse mixte, encore moins de caractères spéciaux. Il est préférable de simplement filtrer les caractères non imprimables de /dev/urandom
jusqu'à ce que vous ayez un mot de passe de la longueur souhaitée :
cat /dev/urandom | tr -cd '@-~' | head -c 8
Ce qui donne quelque chose comme XiVsdn[y
ou [email protected]^lY
. Vous pouvez modifier le 8
à la fin pour la longueur de mot de passe souhaitée. Vous pouvez également modifier le @-~
partie pour limiter les caractères. Par exemple, cela n'imprimera que des caractères alphanumériques :
cat /dev/urandom | tr -cd 'a-zA-Z0-9' | head -c 8
C'est presque identique à ce que pwgen -s
ferait et donne des mots de passe comme nZiUzNtE
.
En prime, le tr
L'outil est inclus dans presque tous les systèmes d'exploitation (Mac OS X, GNU/Linux, Android/Linux, Solaris, FreeBSD, etc.) à l'exception de Microsoft Windows.