Générer un mot de passe aléatoire

Pour l’une de ces commandes de mot de passe aléatoire, vous pouvez soit les modifier pour afficher une longueur de mot de passe différente, soit vous pouvez utiliser les premiers caractères x du mot de passe généré si vous ne voulez pas un mot de passe trop long.

Cette méthode utilise SHA pour hachage de la date, passe à travers base64, puis les sorties des 32 premiers caractères.

date +%s | sha256sum | base64 | head -c 32 ; echo

Cette méthode a utilisé la fonction intégrée /dev/urandom et filtre uniquement les caractères que vous utilisez normalement dans un mot de passe

< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;

Celui-ci utilise la fonction rand d’openssl, qui peut ne pas être installée sur votre système.

openssl rand -base64 32

Celui-ci fonctionne comme l’autre urandom, mais fait juste le travail à l’envers

tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1

vous devez récupérer la chaine en variable pour le script, exemple :

mdp=$(tr -cd '[:alnum:]' < /dev/urandom | fold -w12 | head -n1)

Voici un autre exemple qui filtre à l’aide de la commande strings, qui génère des chaînes imprimables à partir d’un fichier, qui dans ce cas est la fonction urandom.

strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo

Voici une version encore plus simple de l’urandom.

< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c6

Celui-ci parvient à utiliser la très utile commande dd.

dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev

Vous pouvez même créer un mot de passe aléatoire gauche, qui vous permettrait de taper votre mot de passe d’une seule main.

</dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c8; echo ""

Si vous allez utiliser tout le temps, c’est probablement une meilleure idée de le mettre dans une fonction. Dans ce cas, une fois que vous exécutez la commande une fois, vous serez en mesure d’utiliser randpw chaque fois que vous souhaitez générer un mot de passe aléatoire. Vous voudrez probablement mettre cela dans votre fichier ~/.bashrc

randpw(){ < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;}

Vous pouvez utiliser cette même syntaxe pour en faire une de ces fonctions - il suffit de remplacer tout dans le {}

openssl : Générer des données aléatoires

Générer une chaine aléatoire de 128 octets encodée en BASE64 :

$ openssl rand -base64 128
2/X1yDvXHdAsDYPBmToCNYFI9Vjhtt4ynVMFCcMfV0jJm+EytH22MEyMs7XV4rbB
6CdddwCD0T3sYu7hCF+Q5Dy72S3LKhZL5cbB8gaf2l+Guv/GCU/oiYTezRwLsAaN
82Sig1bnsyJeI3q67PsLS2yUhWTXiyRxv6/69EL/i30=

Générer une chaine aléatoire de 16 octets encodée en HEX :

$ openssl rand -hex 16
e114c246088060ef2af0b4f4f518b875

Conversion des minuscules en majuscules

$ echo "e114c246088060ef2af0b4f4f518b875" | tr [a-f] [A-F]
E114C246088060EF2AF0B4F4F518B875

Générer une chaine aléatoire de 20 octets encodée en HEX avec les lettres en majuscule:

$ openssl rand -hex 20 | tr [a-f] [A-F]
7B4704BED590598DDC8394BE05F958A089BF92FD

Générer un fichier binaire de 1024 octets :

$ openssl rand -out random-data.bin 1024
$ ls -l random-data.bin
-rw-r--r-- 1 root root 1024 Apr 11 18:21 random-data.bin

Générer une chaine aléatoire de 64 octets en utilisant le fichier spécial /dev/urandom et encodée avec la commande openssl en BASE64 :

$ head -c 64 /dev/urandom | openssl enc -base64
3wZ9RXe5bwCKzfEUElHOEJNb97SNN7QfKetKdSfAXvNhaiyCwWBWBEJupPAM2K/Q
6zx09thfwss2ffCGvencfg==

Un petit enchainement de commandes permettant de générer des mots de passe aléatoires :

$ echo $(head -c 32 /dev/urandom | strings -1) | sed 's/[[:space:]]//g'
18EC2Wl1-W