Un hachage transforme des données en une empreinte de taille fixe que n'importe qui peut recalculer ; il détecte une modification accidentelle mais ne prouve rien sur l'auteur. Un HMAC mêle une clé secrète partagée au hachage : seuls les détenteurs de la clé peuvent le créer ou le vérifier, ce qui prouve l'intégrité et que l'expéditeur connaissait le secret. Une signature numérique utilise une clé privée pour signer et une clé publique pour vérifier : chacun peut contrôler qui a signé, et le signataire ne peut pas le nier ensuite.
En un coup d'œil
| Hachage | HMAC | Signature numérique | |
|---|---|---|---|
| Clé nécessaire | Aucune | Un secret partagé | Clé privée pour signer, publique pour vérifier |
| Détecte une modification | Oui | Oui | Oui |
| Prouve qui l'a créé | Non | Seulement pour qui partage le secret | Oui, pour toute personne ayant la clé publique |
| Non-répudiation | Non | Non (l'une ou l'autre partie a pu le créer) | Oui |
| Vitesse | Très rapide | Très rapide | Plus lente |
| Usage typique | Sommes de contrôle, déduplication | Signature de requêtes d'API, webhooks, jetons HS256 | Signature de logiciels, certificats, jetons RS256/ES256 |
Le même message, de trois façons
Pour le message hello :
| Méthode | Résultat |
|---|---|
| Hachage SHA-256 | 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 |
HMAC-SHA256, clé secret |
88aab3ede8d3adf94d26ab90d3bafd4a2083070c3bcce9c014ee04a443847c0b |
HMAC-SHA256, clé other |
ccba5a99c3e0c7f2bc6c6f02bc752217c3c71fb91b41211dffc0c1d0981d1663 |
Le hachage est le même pour tous. Le HMAC change complètement avec la clé : sans secret, personne ne peut produire la deuxième ligne. Une signature numérique du même message serait produite avec une clé privée et vérifiée avec la clé publique correspondante ; une signature Ed25519 fait toujours 64 octets et une signature RSA-2048, 256 octets.
Calculez les deux premiers avec le générateur de hachage et le générateur HMAC, et créez une paire de clés pour les signatures avec le générateur de paires de clés.
Lequel choisir ?
- Vérifier qu'un téléchargement correspond à une somme publiée : hachage, publié par un canal de confiance (voir Comment vérifier la somme de contrôle d'un fichier).
- Vérifier un webhook ou un appel d'API entre systèmes qui partagent un secret : HMAC.
- Permettre à chacun de vérifier qui a publié un logiciel ou un document : signature numérique.
- Stocker des mots de passe : aucun directement ; utilisez un hachage de mot de passe, voir MD5, SHA-256 ou bcrypt.
Le contexte des clés en jeu figure dans Chiffrement symétrique ou asymétrique et Comment fonctionne le hachage explique le hachage en profondeur.