Mode d’emploi
- Saisissez la clé secrète et indiquez s’il s’agit de texte brut ou d’octets hexadécimaux.
- Collez le message, par exemple le contenu d’un webhook exactement tel que vous l’avez reçu.
- Choisissez l’algorithme et l’encodage de sortie utilisés par votre service ; le HMAC est mis à jour au fur et à mesure de la saisie.
- Pour vérifier une signature, collez-la dans le champ de vérification et recherchez « Correspondance ».
Fonctionnement
HMAC (RFC 2104) combine une clé secrète et une fonction de hachage pour produire une signature que seule une personne possédant la clé peut créer. Les services, comme les webhooks et les requêtes API signées, envoient un HMAC avec chaque message afin que le destinataire puisse vérifier son authenticité et s’assurer qu’il n’a pas été modifié.
Cet outil utilise l’API Web Crypto de votre navigateur (crypto.subtle.importKey et sign) et ses résultats sont vérifiés à l’aide des vecteurs de test RFC 4231 et RFC 2202. Une clé textuelle et le message sont encodés en UTF-8. Une clé hexadécimale est décodée en octets bruts ; les espaces, les deux-points et le préfixe 0x initial sont ignorés. HMAC-SHA-256 est le choix le plus courant ; HMAC-SHA-1 est toujours considéré comme sûr pour un MAC, mais il est surtout utilisé par les anciennes API.
Si votre signature ne correspond pas, vérifiez les différences les plus fréquentes : les octets exacts du message (de nombreux fournisseurs de webhooks signent le corps brut, et non un JSON reformaté), l’horodatage ou le préfixe ajouté par le fournisseur à la chaîne signée, l’utilisation de la clé comme texte ou son décodage préalable depuis l’hexadécimal ou Base64, et le format de la signature attendue (hexadécimal ou Base64). Si elle comporte un préfixe tel que « sha256= », supprimez-le avant la comparaison.
Exemples
Cas de test RFC 4231
La clé « Jefe » (texte), le message « what do ya want for nothing? » et HMAC-SHA-256 donnent 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Choisissez « Essayer un exemple » pour le charger.
Vérifier une signature de webhook
Un fournisseur envoie l’en-tête X-Signature: sha256=… avec chaque requête. Collez le corps brut de la requête comme message et le secret de votre webhook comme clé, choisissez HMAC-SHA-256 et Hex, puis collez la valeur après « sha256= » dans le champ de vérification.
Clé encodée en hexadécimal
Certains systèmes fournissent des clés sous forme de chaînes hexadécimales, comme 0b0b0b…. Choisissez Hex comme format de clé pour que l’outil signe avec les octets décodés ; utiliser cette même chaîne comme texte donne un résultat complètement différent.
Foire aux questions
Quelle est la différence entre un HMAC et une empreinte simple ?
Tout le monde peut calculer l’empreinte simple d’un message, comme SHA-256. Un HMAC dépend aussi d’une clé secrète : seule une personne possédant la clé peut donc le produire ou le vérifier. Cela prouve que le message provient d’une personne possédant la clé et qu’il n’a pas été modifié.
Pourquoi mon HMAC ne correspond-il pas à celui de mon serveur ?
Les octets en entrée diffèrent presque toujours : fins de ligne, espaces, ordre des clés JSON, encodage des caractères ou clé à décoder depuis l’hexadécimal ou Base64. Vérifiez également que vous comparez le même format (hexadécimal ou Base64) et supprimez les préfixes comme « sha256= ».
Ma clé secrète est-elle envoyée quelque part ?
Non. La clé et le message sont utilisés uniquement par l’API Web Crypto dans cet onglet du navigateur. Ils ne sont ni envoyés, ni stockés, ni inclus dans les données d’analyse.
HMAC-SHA-1 est-il toujours sécurisé ?
Les collisions SHA-1 ne compromettent pas directement HMAC-SHA-1, qui reste accepté pour des raisons de compatibilité. Pour les nouveaux systèmes, utilisez HMAC-SHA-256 ou une version plus robuste.
Confidentialité
La clé, le message et le résultat restent dans cet onglet du navigateur. Rien n’est téléversé, stocké ni envoyé aux outils d’analyse ; seul un événement anonyme indiquant que l’outil a été utilisé est enregistré.