À quoi ça sert
HMAC (code d’authentification de message à base de hachage, RFC 2104) combine une clé secrète et une fonction de hachage pour signer un message. Le destinataire, qui connaît la même clé, recalcule le HMAC et le compare à celui reçu. Si le message a été modifié ou si l’expéditeur ne connaissait pas la clé, les valeurs diffèrent.
Les HMAC sont partout : signatures de webhooks (GitHub, Stripe, Slack), requêtes d’API signées, JWT en HS256, signature de cookies et mots de passe à usage unique. Cet outil calcule en même temps HMAC-MD5, HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 et HMAC-SHA512, pour comparer avec celui qu’utilise votre système.
Mode d’emploi
- Saisissez la Clé secrète. Changez le Format de la clé si elle est donnée en octets hex ou Base64 plutôt qu’en texte.
- Collez le Message ou cliquez sur Exemple.
- Tous les HMAC se mettent à jour pendant la saisie. Choisissez une sortie Hex ou Base64 et copiez la valeur voulue.
Le message est encodé en UTF-8 tel que saisi, espaces et sauts de ligne compris.
Exemple
Avec la clé key et le message The quick brown fox jumps over the lazy dog, le HMAC-SHA256 vaut f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8. Vous pouvez vérifier en ligne de commande :
echo -n "The quick brown fox jumps over the lazy dog" | openssl dgst -sha256 -hmac "key"
Attention au -n : sans lui, echo ajoute un saut de ligne et le HMAC change.
Vérifier un webhook
Pour vérifier un webhook, prenez le corps brut de la requête avant tout décodage JSON, construisez la chaîne décrite par le fournisseur (souvent timestamp.body), calculez le HMAC avec votre secret de signature et comparez-le à l’en-tête de signature. Dans votre code, comparez les signatures avec une fonction à temps constant pour éviter les attaques temporelles.
FAQ
› Quelle différence entre un hachage et un HMAC ?
N'importe qui peut calculer un hachage simple comme SHA-256. Un HMAC mélange une clé secrète au hachage : seule une personne qui connaît la clé peut produire ou vérifier la valeur. C'est un code d'authentification de message, pas une simple somme de contrôle.
› Quel algorithme HMAC choisir ?
HMAC-SHA256 est le choix habituel et celui qu'attendent la plupart des API et webhooks. HMAC-SHA512 convient aussi. HMAC-MD5 et HMAC-SHA1 restent considérés comme sûrs en tant que MAC, mais utilisez-les seulement si un ancien système l'exige.
› Pourquoi mon HMAC ne correspond-il pas à celui du serveur ?
Vérifiez les octets exacts du message (un saut de ligne final ou des espaces JSON différents changent tout), le format de la clé (texte, hex ou Base64) et l'encodage de sortie. Les fournisseurs de webhooks signent souvent une chaîne construite à partir d'un horodatage et du corps brut de la requête.
› Ma clé secrète est-elle enregistrée ou envoyée ?
Non. Le HMAC est calculé dans votre navigateur. La clé reste uniquement en mémoire sur cette page : elle n'est ni enregistrée, ni écrite dans la barre d'adresse, ni incluse dans les liens de partage.