Aller au contenu principal
~/GiwiSoft
Photo 1473520844623 167ad716dcae

Générer des chaînes 128 bits hexadécimale aléatoire ou mots de passe

Giwi 3 min de lecture Linux, DevOps

Générer des chaînes 128 bits hexadécimales aléatoires pour servir de clef ? Pfff, facile. Et alors, si je veux générer un mot de passe aléatoire?

Chaînes 128 bits aléatoires

$ dd if=/dev/urandom | hexdump -Cv
0028cb40 17 9b d8 db 72 41 56 9a d9 a2 9d 55 e9 5b e3 cf |....rAV....U.[..|
0028cb50 96 a4 48 b8 2d fe cc b4 bd 10 29 3a 74 8d aa 64 |..H.-.....):t..d|
0028cb60 32 b3 35 f8 cd 4c 35 de c9 df 3f b7 44 9e cc 51 |2.5..L5...?.D..Q|
0028cb70 67 86 b5 8a df ef 53 66 86 06 18 41 d9 5f a1 ca |g.....Sf...A._..|
0028cb80 7e 4f 67 71 08 b2 21 47 85 f4 5c 2a d5 3b 8d 3a |~Ogq..!G..\*.;.:|
0028cb90 df b3 7f 29 79 75 75 dc 16 f3 3e b4 c8 78 41 e7 |...)yuu...>..xA.|
0028cba0 54 d6 da 6a e5 8a 90 46 9f dd 7f 61 36 0c 81 bd |T..j...F...a6...|
0028cbb0 a0 9e 6b 98 03 a0 c8 4d 31 27 19 4a be 23 93 05 |..k....M14.J..^C

Et hop : a0 9e 6b 98 03 a0 c8 4d 31 27 19 4a be 23 93 05

Ou bien :

$ cat /proc/sys/kernel/random/uuid | hexdump -Cv
00000000 37 64 61 30 64 61 64 38 2d 30 64 36 61 2d 34 65 |7da0dad8-0d6a-4e|
00000010 35 39 2d 62 63 62 38 2d 33 64 38 66 39 36 34 33 |59-bcb8-3d8f9643|
00000020 64 63 33 34 0a |dc34.|
00000025

Ce qui donne : 37 64 61 30 64 61 64 38 2d 30 64 36 61 2d 34 65

Ou encore :

$ date | md5sum
a8649fcf7758f591bbaa3fc4395cef4f

Génération de mots de passe de 32 caractères

10 façons de le faire :

$ date +%s | sha256sum | base64 | head -c 32 ; echo
NDFlNzk5NDg2NTkyMzc0MTIxYmNmMThj
$ < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;
MN-zh0uuuMiUFqyqV-W2s7oqcZM_9bGh
$ openssl rand -base64 32
DP4o82AfCWEe0D8jhZgw4alvqnplX5H4OcbOvpnYoPU=
$ tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1
c44NciLlO5N6iPonYkAD0p6dNGaIjt
$ strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo
3GDZvUXe0VHnPsV6Ul4mu0YZFAGEGG
$ < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32
HftVu-6uwL4VXY9VVo6m6aLMNCU2vsu3
$ dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev
96C3tm9K6C0iioOr7emxnVFaoZRRm/TUuHINIkEF5Pg
$ </dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c32; echo ""
Ad@%B5!vzBGq%A$rgWxEBE2dt%1cE2TW

Et la méthode la plus simple :

$ date | md5sum
593d4efc647d86701a6378730b855640 -

Méthodes complémentaires

openssl rand - qualité crypto garantie

# 32 bytes hex (64 caractères hexadécimaux)
openssl rand -hex 32

# Chaîne base64 (compatible URL)
openssl rand -base64 32 | tr '+/' '-_'

# Chaîne lisible (alphanumérique uniquement)
openssl rand -base64 32 | tr -dc 'A-Za-z0-9' | head -c32

pwgen - mots de passe prononçables

sudo apt install pwgen

# 1 mot de passe de 16 caractères
pwgen -s 16 1

# Sans symboles, uniquement prononçable
pwgen -0 -A 12 1

# 10 mots de passe sécurisés avec symboles
pwgen -s -y 20 10

pass - le gestionnaire de mots de passe Unix

sudo apt install pass

# Initialisation
pass init "votre-clef-gpg"

# Générer et stocker (15 caractères, -n = pas de symboles)
pass generate MonSite/webmaster@mail.com 15 -n

# Récupérer
pass MonSite/webmaster@mail.com

uuidgen - identifiants uniques universels

# UUID v4 (aléatoire)
uuidgen

# En majuscules
uuidgen | tr '[:lower:]' '[:upper:]'

# Sans tirets
uuidgen | tr -d '-'

Sécurité : /dev/urandom vs /dev/random

Dispositif Bloque si entropie insuffisante Usage recommandé
/dev/urandom Non Tout usage général, clés crypto, mots de passe
/dev/random Oui Uniquement pour des seed de générateurs matériels

Mythe : /dev/random serait plus sûr que /dev/urandom. Faux. Depuis Linux 5.6, /dev/urandom est initialisé avec 256 bits d’entropie à chaque démarrage. Sur FreeBSD, /dev/urandom est un alias vers /dev/random. Utilisez /dev/urandom partout.