Générateur de Hash MD5
Générer un hash MD5 à partir de n'importe quel texte
Texte d'entrée
Hash MD5
Le hash MD5 s'affichera ici…
Qu'est-ce que le hachage MD5 ?
MD5 (Message-Digest Algorithm 5) est une fonction de hachage cryptographique qui produit un condensé fixe de 128 bits (16 octets) à partir de n'importe quelle entrée, quelle que soit sa taille. Publiée en 1992 par Ronald Rivest sous la forme RFC 1321, MD5 a été conçue comme successeur plus rapide de MD4 et est rapidement devenue l'une des fonctions de hachage les plus utilisées sur internet. L'algorithme traite l'entrée en blocs de 512 bits à travers quatre tours de 16 opérations chacun, en appliquant une fonction non linéaire différente par tour, pour produire une empreinte hexadécimale de 32 caractères.
Une fonction de hachage est une transformation à sens unique : à partir d'une entrée, on peut calculer le hash instantanément, mais à partir du hash seul, on ne peut pas retrouver l'entrée d'origine. Même un changement d'un seul bit dans l'entrée produit un condensé complètement différent — une propriété appelée effet avalanche. MD5 projette un espace d'entrée infini sur un espace de sortie fixe de 128 bits, de sorte que des collisions (deux entrées différentes produisant le même hash) sont mathématiquement garanties d'exister, mais une fonction de hachage sécurisée les rend computationnellement impossibles à trouver.
Depuis 2004, des chercheurs ont démontré des attaques par collision pratiques contre MD5, ce qui signifie qu'il n'est plus considéré comme sécurisé pour les signatures numériques, les certificats ou tout contexte où la résistance aux collisions est requise. Cependant, MD5 reste largement utilisé à des fins non sécuritaires : vérifier l'intégrité des fichiers après un téléchargement, générer des clés de cache, dédupliquer du contenu et créer des identifiants déterministes à partir de chaînes. Pour ces usages, la vitesse de l'algorithme et son support universel dans les bibliothèques en font un choix pratique. En 2008, Marc Stevens et ses collègues ont publié une attaque par collision à préfixe choisi, ce qui signifie qu'un attaquant peut créer deux documents avec des préfixes arbitraires choisis qui partagent le même condensé. Cette technique a été démontrée au Chaos Communication Congress 2008 en construisant un faux certificat d'autorité de certification. Le malware Flame de 2012 a ensuite exploité des collisions à préfixe choisi pour falsifier un certificat de signature de code Microsoft, permettant au malware de se faire passer pour une mise à jour Windows légitime. Ces exploits réels ont confirmé que l'algorithme est cryptographiquement compromis pour tout usage ancré dans la confiance et ne doit pas être utilisé lorsqu'un adversaire peut influencer les entrées hachées.
Pourquoi utiliser ce générateur MD5 ?
Générez des hashes MD5 instantanément sans rien installer ni écrire de code. Collez votre texte et obtenez le condensé hexadécimal de 32 caractères en temps réel.
Cas d'usage de MD5
MD5 vs autres algorithmes de hachage
MD5 est le plus rapide et le plus court des algorithmes de hachage courants, mais il offre les garanties de sécurité les plus faibles. Le tableau ci-dessous compare les tailles de condensé, les normes et les cas d'usage appropriés pour chaque algorithme.
| Algorithme | Taille du condensé | Longueur hex | Norme | Idéal pour |
|---|---|---|---|---|
| MD5 | 128 bits | 32 hex chars | 1992 / RFC 1321 | Checksums, non-security fingerprints |
| SHA-1 | 160 bits | 40 hex chars | 1995 / RFC 3174 | Legacy git commits (being replaced) |
| SHA-256 | 256 bits | 64 hex chars | 2001 / FIPS 180-4 | TLS certificates, blockchain, JWTs |
| SHA-384 | 384 bits | 96 hex chars | 2001 / FIPS 180-4 | Government systems, higher security margin |
| SHA-512 | 512 bits | 128 hex chars | 2001 / FIPS 180-4 | Digital signatures, HMAC with large keys |
| SHA-3 | 256 bits | 64 hex chars | 2015 / FIPS 202 | Post-quantum readiness, backup standard |
| BLAKE3 | 256 bits | 64 hex chars | 2020 | High-performance checksums, Merkle trees |
Comment fonctionne MD5
MD5 traite l'entrée via une construction de Merkle-Damgård : le message est complété jusqu'à un multiple de 512 bits, divisé en blocs, et chaque bloc est traité par quatre tours de 16 opérations au niveau des bits qui mélangent l'entrée avec des constantes précalculées dérivées du sinus. Le résultat est un état de 128 bits qui devient le condensé final.
Chaque tour applique une fonction auxiliaire non linéaire distincte à trois des quatre mots d'état 32 bits (A, B, C, D). Le tour 1 utilise F(B,C,D) = (B AND C) OR (NOT B AND D) — un sélecteur conditionnel bit à bit. Le tour 2 utilise G(B,C,D) = (B AND D) OR (C AND NOT D) — un sélecteur complémentaire. Le tour 3 utilise H(B,C,D) = B XOR C XOR D — une fonction de parité. Le tour 4 utilise I(B,C,D) = C XOR (B OR NOT D) — un combinateur asymétrique. Ces quatre fonctions garantissent que chaque bit de l'entrée influence le condensé de sortie, produisant l'effet avalanche qui fait que de petits changements dans l'entrée provoquent des changements importants et imprévisibles dans le hash résultant.
MD5: 5eb63bbbe01eeed093cb22bb8f5acdc3
(128 bits = 16 bytes = 32 hex characters)
L'algorithme se déroule en cinq étapes : (1) ajouter un bit 1, puis des zéros, jusqu'à ce que la longueur du message soit 448 mod 512 ; (2) ajouter la longueur du message d'origine sous forme d'entier 64 bits little-endian ; (3) initialiser quatre variables d'état 32 bits (A, B, C, D) avec des constantes fixes ; (4) traiter chaque bloc de 512 bits à travers 64 opérations en utilisant quatre fonctions non linéaires (F, G, H, I), une par tour de 16 opérations ; (5) ajouter l'état résultant au total cumulé et produire le hash final de 128 bits en ordre d'octets little-endian.
Exemples de code
Comment générer des hashes MD5 dans les langages et environnements populaires. À noter que MD5 n'est pas disponible dans l'API Web Crypto du navigateur — utilisez une bibliothèque ou Node.js.
// MD5 is not available in Web Crypto API (it only supports SHA-*)
// Use a library like 'js-md5' or the Node.js crypto module
// Node.js (built-in crypto)
const crypto = require('crypto')
const hash = crypto.createHash('md5').update('hello world').digest('hex')
console.log(hash) // → "5eb63bbbe01eeed093cb22bb8f5acdc3"
// With Unicode input
crypto.createHash('md5').update('cafe\u0301').digest('hex')
// → "4fad076bae205e95bec9dacea498e2ab"import hashlib
# Basic MD5 hash
result = hashlib.md5(b'hello world').hexdigest()
print(result) # → "5eb63bbbe01eeed093cb22bb8f5acdc3"
# Hash a string (must encode to bytes first)
text = 'hello world'
hashlib.md5(text.encode('utf-8')).hexdigest()
# → "5eb63bbbe01eeed093cb22bb8f5acdc3"
# Hash a file
with open('file.bin', 'rb') as f:
md5 = hashlib.md5()
for chunk in iter(lambda: f.read(8192), b''):
md5.update(chunk)
print(md5.hexdigest())package main
import (
"crypto/md5"
"fmt"
)
func main() {
data := []byte("hello world")
hash := md5.Sum(data)
fmt.Printf("%x\n", hash)
// → 5eb63bbbe01eeed093cb22bb8f5acdc3
}# Using md5sum (Linux) or md5 (macOS) echo -n "hello world" | md5sum # → 5eb63bbbe01eeed093cb22bb8f5acdc3 - # macOS echo -n "hello world" | md5 # → 5eb63bbbe01eeed093cb22bb8f5acdc3 # Hash a file md5sum package.json # → a1b2c3d4e5f6... package.json # Using openssl (cross-platform) echo -n "hello world" | openssl md5 # → MD5(stdin)= 5eb63bbbe01eeed093cb22bb8f5acdc3