Comment se calcule un HMAC ?
Un HMAC (code d'authentification de message à clé) combine une fonction de hachage, comme SHA-256, et une clé secrète. La norme FIPS 198-1 du NIST le définit ainsi : la clé est d'abord mise à la taille d'un bloc de la fonction de hachage, complétée par des zéros si elle est plus courte, hachée si elle est plus longue. On hache ensuite deux fois, avec deux masques différents.
HMAC(K, m) = H((K0 ⊕ opad) ‖ H((K0 ⊕ ipad) ‖ m))ipad = octet 0x36 répété, opad = octet 0x5c répétéK0 est la clé mise à la taille du bloc, ⊕ le « ou exclusif » octet par octet, ‖ la mise bout à bout. Le calculateur lit le message en UTF-8, la clé en UTF-8 ou en hexadécimal, et calcule le HMAC avec l'API de chiffrement intégrée à votre navigateur.
Longueur du résultat
Le HMAC a toujours la longueur de la sortie de la fonction de hachage, quelle que soit la taille du message.
| Algorithme | Bits | Caractères hex |
|---|---|---|
| HMAC-SHA-1 | 160 | 40 |
| HMAC-SHA-256 | 256 | 64 |
| HMAC-SHA-384 | 384 | 96 |
| HMAC-SHA-512 | 512 | 128 |
Un protocole peut ne garder que les premiers octets du résultat (troncature, prévue par FIPS 198-1) : comparez alors le début du HMAC affiché.
Trois exemples officiels
Ces exemples sont des vecteurs de test publiés avec les RFC 4231 (SHA-256, SHA-384, SHA-512) et 2202 (SHA-1) : un outil HMAC correct doit les retrouver à l'identique.
5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843, soit en Base64 W9zBRr9gdU5qBCQmCJV1x1oAPwidJzmDnexYuWTsOEM=. Le même résultat s'obtient avec la clé 4a656665 en mode hexadécimal : ce sont les quatre octets de « Jefe ».
effcdf6ae5eb2fa2d27416d5f184df9c259a7c79 : 40 caractères, pour 160 bits.
Saisissez 0b répété vingt fois en mode hexadécimal :b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7.
À quoi sert un HMAC ?
Un HMAC prouve qu'un message vient bien de quelqu'un qui connaît la clé, et qu'il n'a pas été modifié en route. Le destinataire refait le calcul avec la même clé et compare. C'est ce qu'utilisent couramment les webhooks (un service signe chaque notification qu'il envoie), les API qui signent leurs requêtes, ou les jetons JWT en HS256, dont la signature est un HMAC-SHA-256.
SHA-256 est aujourd'hui le choix le plus répandu. HMAC-SHA-1 se rencontre encore dans des systèmes plus anciens, c'est pourquoi le calculateur le propose.
Les erreurs fréquentes
Coller la clé devant le message puis hacher le tout ne donne pas un HMAC, et pas la même valeur : seule la double passe avec ipad et opad est un HMAC. Autres causes d'écart avec un serveur : une clé hexadécimale saisie en texte, un retour à la ligne en fin de message, ou la comparaison du résultat en hexadécimal avec une valeur en Base64. Côté serveur, comparez deux HMAC en temps constant, jamais avec un simple test d'égalité de chaînes.
Questions fréquentes
Quelle différence entre un hash et un HMAC ?
Un hash (SHA-256 seul) se calcule sans secret : n'importe qui peut le refaire. Un HMAC mêle une clé secrète au calcul : seul celui qui connaît la clé peut produire ou vérifier le résultat. Il prouve à la fois l'origine et l'intégrité du message.
Ma clé est en hexadécimal, comment la saisir ?
Choisissez « Hexadécimal » sous la clé : « 4a656665 » est alors lu comme 4 octets (le mot « Jefe »), et non comme 8 caractères. Les espaces, les deux-points et le préfixe 0x sont ignorés.
Pourquoi mon HMAC ne correspond-il pas à celui du serveur ?
Le plus souvent, le message n'est pas exactement le même : un retour à la ligne en fin de texte, une espace, un encodage différent (le calculateur lit le message en UTF-8). Vérifiez aussi le format de la clé et l'algorithme.
Hexadécimal ou Base64 : lequel choisir ?
C'est le même HMAC écrit de deux façons. L'hexadécimal (64 caractères pour SHA-256) est le plus courant dans les en-têtes de signature ; le Base64 est plus court (44 caractères pour SHA-256). Prenez celui qu'attend le service.
Mon message et ma clé sont-ils envoyés ?
Non : le calcul se fait dans votre navigateur par l'API de chiffrement intégrée, et rien n'est gardé dans l'adresse de la page. Évitez malgré tout de saisir une clé de production sur un site tiers, quel qu'il soit.
Vérifié le 11 octobre 2026 sur nist.gov (FIPS 198-1, HMAC).
Une erreur ? Signalez-la, nous la corrigeons.