Aller au contenu principal
~/GiwiSoft
Kevin ku w7ZyuGYNpRQ unsplash scaled

Générer des Hash 128 bits sous Linux

Giwi 4 min de lecture Linux

Il ya plusieurs façon de générer des Hash hexadécimaux sous linux.

/dev/urandom

$ 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

# 128 : a0 9e 6b 98 03 a0 c8 4d 31 27 19 4a be 23 93 05 <- dernière ligne du dump par exemple

/proc/sys/kernel/random/uuid

$ 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

# 128 : 37 64 61 30 64 61 64 38 2d 30 64 36 61 2d 34 65 <- ici la première ligne

md5sum

Voici pour finir, la version la plus simple :

$date  md5sum  cut -d'-' -f 1
f332f2806519d8d0d3c37cead8997932

Si vous en connaissez d’autres, dites le moi.

Génération avec openssl

openssl est présent sur presque tous les systèmes Linux et offre des hash prêts à l’emploi :

# MD5 (128 bits)
openssl md5 <<< "mon mot de passe"

# SHA-256
openssl sha256 <<< "mon mot de passe"

# SHA-512
openssl sha512 <<< "mon mot de passe"

# En une ligne, sortie brute en hexa
echo -n "mon mot de passe" | openssl dgst -md5
echo -n "mon mot de passe" | openssl dgst -sha256
echo -n "mon mot de passe" | openssl dgst -sha512

Génération de mots de passe aléatoires

Avec pwgen

# Installer pwgen
sudo apt install pwgen # ou brew install pwgen

# Générer un mot de passe de 16 caractères
pwgen 16 1

# Avec symboles, sécurisé
pwgen -s 32 1

# Sans voyelles (évite les mots prononçables)
pwgen -0 16 1

Avec /dev/urandom directement

# Mot de passe aléatoire en base64 (16 octets = 128 bits)
dd if=/dev/urandom bs=16 count=1 2>/dev/null | base64

# Mot de passe alphanumérique 16 caractères
tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 16

# Avec symboles
tr -dc 'A-Za-z0-9!@#$%^&*()_+' < /dev/urandom | head -c 24

# Uniquement des chiffres (code PIN à 6 chiffres)
tr -dc '0-9' < /dev/urandom | head -c 6

SHA-256 et SHA-512

Pour du hash sécurisé (plus que 128 bits), utilisez les familles SHA-2 :

# SHA-256 (256 bits = 64 caractères hex)
echo -n "mon message" | sha256sum

# SHA-512 (512 bits = 128 caractères hex)
echo -n "mon message" | sha512sum

# Depuis un fichier
sha256sum monfichier.bin
sha512sum monfichier.bin

Conversion hexadécimale avec xxd

xxd fait partie de Vim et permet de convertir binaire vers hexa :

# 16 octets aléatoires en hexa
dd if=/dev/urandom bs=16 count=1 2>/dev/null | xxd -p

# En majuscules
dd if=/dev/urandom bs=16 count=1 2>/dev/null | xxd -p -u

# Avec regroupement par 2 octets
dd if=/dev/urandom bs=16 count=1 2>/dev/null | xxd -p -c 4

One-liners pour la vie de tous les jours

Quelques commandes à garder dans son .bashrc ou à coller dans un terminal :

# Hash 128 bits (MD5) depuis une string
alias hash128='echo -n "$1" | md5sum | cut -d" " -f1'

# Mot de passe de 20 caractères avec symboles
alias mdp='tr -dc "A-Za-z0-9!@#$%^&*()_+" < /dev/urandom | head -c 20'

# UUID v4 (128 bits lisible)
uuidgen

# Hash SHA-256 lisible
echo -n "ma chaîne" | sha256sum | cut -c1-64

# 16 octets aléatoires en hexa propre
alias randhex='dd if=/dev/urandom bs=16 count=1 2>/dev/null | xxd -p'