araç köşesi

Générateur HMAC (SHA-256, SHA-384, SHA-512, SHA-1)

Calculez une signature HMAC à partir d'un message et d'une clé secrète, et comparez une signature de webhook à la valeur attendue

Vos données restent chez vous. La conversion se fait dans le navigateur ; rien n'est envoyé à un serveur.

Comment ça marche

Collez à gauche le message à signer et saisissez dans le champ Clé secrète la clé fournie par le service ; la signature HMAC apparaît à droite pendant la saisie. Si vous testez le webhook d'un prestataire de paiement, collez le corps de la requête exactement tel qu'il est arrivé, sans ajouter un seul espace : un saut de ligne en trop suffit à changer toute la signature. Placez dans Signature attendue la valeur que le service envoie dans son en-tête ; l'outil retire les préfixes comme sha256=, reconnaît seul l'hexadécimal ou le Base64 et affiche IDENTIQUE ou NE CORRESPOND PAS sur la ligne de résultat. Si votre clé est une suite d'octets aléatoires fournie en hexadécimal, réglez Format de la clé sur Octets hexadécimaux : lus comme du texte, les mêmes caractères forment une tout autre clé. La plupart des services utilisent SHA-256 ; si la documentation mentionne HmacSHA512, choisissez SHA-512. Le calcul se fait dans le moteur cryptographique intégré de votre navigateur : ni le message ni la clé ne quittent cette page, et la clé n'est jamais écrite dans un journal d'erreurs.

Cet outil est aussi connu sous le nom de calculer hmac sha256, hmac sha256 en ligne, hmac sha512.

Qu'est-ce que HMAC ?

Le HMAC (code d'authentification de message basé sur un hachage) produit une signature de longueur fixe à partir d'un message et d'une clé secrète (RFC 2104). La clé est mélangée à deux valeurs de remplissage différentes et passe deux fois par la fonction de hachage choisie. Le résultat montre que le message n'a pas changé et qu'il a été produit par quelqu'un qui connaît la clé. Les webhooks, les requêtes d'API signées et les cookies de session sont protégés de cette façon.

Qu'est-ce que Signature de webhook ?

Une signature de webhook est la valeur HMAC qu'un service ajoute dans un en-tête quand il vous envoie une notification. Le service signe le corps avec une clé secrète qu'il partage avec vous ; vous signez le même corps avec la même clé et comparez votre résultat à l'en-tête. Si les deux sont identiques, la notification vient bien de ce service. Le nom de l'en-tête change d'un service à l'autre, et la valeur porte souvent un préfixe sha256= ou arrive en Base64.

Quelle est la différence entre un HMAC et une signature numérique ?

Avec le HMAC, celui qui signe et celui qui vérifie partagent la même clé secrète : chacun des deux a pu produire la signature, le HMAC ne prouve donc pas à un tiers qui a signé. Une signature numérique (RSA, ECDSA) repose sur deux clés : seul le propriétaire signe, et tout le monde vérifie avec la clé publique. Le HMAC est beaucoup plus rapide et suffit quand deux systèmes se font confiance, comme pour les webhooks et les API ; les contrats et la publication de logiciels, où la signature ne doit pas pouvoir être niée, demandent une signature numérique.

La signature ne correspond pas ? Les quatre causes habituelles

Le HMAC réagit à chaque octet du message. La cause la plus fréquente d'une signature de webhook refusée : le corps que vous signez n'est pas celui qui a été signé. Remettre en forme le JSON, changer l'ordre des champs ou ajouter un saut de ligne final modifie le résultat. Signez toujours le corps brut, tel qu'il est arrivé.

Les autres causes : une clé lue dans le mauvais format (clé hexadécimale lue comme du texte), le mauvais algorithme (SHA-1 au lieu de SHA-256) et la comparaison de deux écritures différentes (hexadécimal d'un côté, Base64 de l'autre). Certains services signent un horodatage avec le corps ; la chaîne signée ressemble alors à « horodatage.corps ». Consultez la documentation.

  • Corps modifié : espaces, sauts de ligne, ordre des champs
  • Format de la clé : clé hexadécimale lue comme du texte
  • Algorithme : SHA-1, SHA-256 et SHA-512 confondus
  • Sortie : hexadécimal comparé à du Base64, ou horodatage ajouté au message signé

Quel algorithme choisir ?

Celui avec lequel l'autre partie signe. La documentation du service l'indique, et la longueur de la signature le trahit : en hexadécimal, 40 chiffres correspondent à SHA-1, 64 à SHA-256, 96 à SHA-384 et 128 à SHA-512. Si vous concevez votre propre système, HMAC-SHA256 suffit et reste l'option la mieux prise en charge.

La faiblesse connue de SHA-1 face aux collisions ne casse pas directement le HMAC, mais SHA-1 n'a plus sa place dans une nouvelle conception et n'est proposé ici que pour les anciens systèmes. Le HMAC basé sur MD5 n'est pas proposé : le moteur cryptographique des navigateurs ne prend pas en charge MD5, et cet outil s'appuie sur ce moteur plutôt que sur un algorithme écrit à la main.

Questions fréquentes

Comment calculer un HMAC SHA256 ?

Collez le message à gauche et la clé secrète dans le champ prévu, en laissant l'algorithme sur SHA-256. La signature hexadécimale de 64 chiffres apparaît à droite ; changez le format de sortie pour obtenir du Base64. Le calcul se fait dans votre navigateur.

Quelle est la différence entre un HMAC et un simple hachage ?

Tout le monde peut calculer un simple hachage : celui qui modifie le message produit aussi le nouveau hachage. Le HMAC fait entrer une clé secrète dans le calcul : sans elle, un message modifié ne peut pas recevoir de signature valide. Le HMAC prouve ainsi que le message vient de quelqu'un qui connaît la clé et qu'il n'a pas été modifié en route.

Est-ce sûr de saisir ma clé secrète sur cette page ?

La clé reste dans votre navigateur : le code de l'outil n'a pas le droit de faire de requête réseau et, même en cas d'erreur, la clé ne figure pas dans le journal d'erreurs, elle y est remplacée par [gizli]. Évitez tout de même d'utiliser une clé de production sur un ordinateur partagé ; préférez une clé de test.

Pourquoi n'y a-t-il aucun résultat quand la clé est vide ?

Par définition, le HMAC exige une clé, et le moteur cryptographique du navigateur refuse une clé vide. Pour une empreinte de fichier sans clé, utilisez l'outil de vérification de somme de contrôle.