Générateur HMAC
Générez et vérifiez des signatures HMAC (SHA-256, SHA-512, SHA-1, MD5) avec une clé secrète.
Soutenez le projet
J’ai choisi de limiter les publicités pour garder l’expérience simple et agréable. Si cet outil vous a été utile, vous pouvez m’aider à le faire vivre — chaque geste compte pour un développeur solo.
Description
Le générateur HMAC permet de calculer une signature d’authentification (HMAC — Hash-based Message Authentication Code) à partir d’un message et d’une clé secrète. Il supporte les algorithmes HMAC-SHA-256 (recommandé), HMAC-SHA-512, HMAC-SHA-1 et HMAC-MD5 (legacy). Vous pouvez saisir le message en UTF-8, choisir le format de la clé (chaîne UTF-8, hexadécimal ou Base64), normaliser le texte (NFC, NFKC) et les fins de ligne (LF, CRLF). Le résultat est affiché en hexadécimal (minuscules ou majuscules) ou en Base64. Une section Vérifier une signature HMAC permet de comparer une signature attendue à celle calculée (idéal pour vérifier des webhooks ou des API).
Comment faire
- Saisissez le message à signer dans la zone de texte (UTF-8).
- Entrez la clé secrète et indiquez si elle est en UTF-8, en hexadécimal ou en Base64.
- Choisissez l’algorithme (HMAC-SHA-256 recommandé), le format de sortie (hex minuscules/majuscules ou Base64) et, si besoin, la normalisation Unicode et les fins de ligne.
- Cliquez sur Générer l’HMAC : la signature s’affiche dans le bloc résultat.
- Pour vérifier une signature : collez la valeur attendue dans « Vérifier une signature HMAC » ; l’outil affiche Signature valide ou Signature invalide.
Exemples
- Message vide, clé "secret", HMAC-SHA-256 : signature hex (64 caractères), par ex.
f9e66e179b6747ae54108f82f8ade8b3c25d76fd30afde6c395822c530196169. - Message "hello", clé "key", HMAC-SHA-256 :
9307b3b915efb5171ff14d8cb55fbcc798c6c0ef1456d66ded1a6aa723a58b7b. - Vérification : après calcul, coller la signature attendue dans le champ dédié pour obtenir un résultat « valide » ou « invalide ».
Cas d’usage
- Webhooks : vérifier que les requêtes reçues sont signées avec la bonne clé partagée (ex. Stripe, GitHub).
- API : signer des requêtes sortantes (HMAC dans un header) pour authentification.
- Intégrité : s’assurer qu’un message n’a pas été modifié en transit, en le signant avec une clé connue du destinataire.
- Tests : reproduire des signatures de référence (RFC, documentation) pour valider un client ou un serveur.
Limites et précautions
- La clé ne doit jamais être exposée (URL, logs, stockage non sécurisé). Utilisez des clés longues et aléatoires (≥ 16 octets recommandé).
- HMAC n’est pas du chiffrement : le message reste lisible ; il sert à l’authentification et à l’intégrité, pas au secret du contenu.
- Les algorithmes SHA-1 et MD5 sont legacy : à réserver à la compatibilité existante, pas pour de nouveaux systèmes.
- Les calculs sont effectués uniquement dans le navigateur : aucune donnée n’est envoyée au serveur.
Bonnes pratiques
- Préférer HMAC-SHA-256 ou HMAC-SHA-512 pour tout nouveau projet.
- Générer la clé avec un générateur aléatoire cryptographiquement sûr (ex. 32 octets en hex).
- Pour la vérification, comparer les signatures en temps constant (éviter les fuites par temps de comparaison) ; cet outil compare après normalisation (trim, casse pour l’hex).
Sécurité
- Le calcul HMAC et la clé restent côté client ; le site ne stocke ni ne transmet la clé.
- Une clé courte (< 8 octets) déclenche un avertissement ; une clé vide est refusée.
- En cas de clé en hex ou Base64, une erreur claire est affichée si le format est invalide.
Alternatives
- Ed25519 / ECDSA : signatures asymétriques (clé publique/privée) pour des scénarios où la clé ne peut pas être partagée.
- JWT : jetons signés (souvent HMAC ou RSA) pour l’authentification par token.
- Outils en ligne de commande :
openssl dgst -sha256 -hmac "key"ou équivalent pour des scripts.
FAQ
Qu’est-ce qu’un HMAC ?
Un HMAC est un code d’authentification de message basé sur une fonction de hachage (ex. SHA-256) et une clé secrète. Il permet de vérifier à la fois l’intégrité du message et l’identité de l’émetteur (qui connaît la clé).
Pourquoi la clé ne doit-elle pas être dans l’URL ?
Les URL sont souvent enregistrées dans l’historique, les logs et les référents. Y mettre la clé exposerait le secret à des tiers ; il faut la transmettre par un canal sécurisé (variable d’environnement, coffre-fort).
HMAC-SHA-256 ou HMAC-SHA-512 ?
Les deux sont sûrs. SHA-512 est un peu plus long (128 caractères hex) et peut être légèrement plus lent ; SHA-256 est le plus courant et suffit pour la grande majorité des usages.
Puis-je utiliser une clé en hexadécimal ou Base64 ?
Oui. Choisissez « Clé interprétée comme » Hex ou Base64. La clé doit être une chaîne hex valide (nombre pair de caractères 0-9a-fA-F) ou une chaîne Base64 valide.
Comment vérifier une signature reçue (ex. webhook) ?
Calculez l’HMAC du corps de la requête (même encodage et normalisation que le serveur) avec votre clé partagée, puis collez la signature fournie par le serveur dans « Vérifier une signature HMAC ». Si le résultat est « Signature valide », la requête est authentique.
Pourquoi « Signature invalide » alors que je pense que la clé est bonne ?
Vérifiez que le message est identique (encodage UTF-8, normalisation Unicode, fins de ligne LF/CRLF) et que la clé est la même (format UTF-8 / hex / Base64). Une différence d’un seul caractère ou octet change la signature.
Les calculs sont-ils faits sur le serveur ?
Non. Tout est exécuté dans votre navigateur (WebCrypto pour SHA-* et logique HMAC). Aucune donnée (message, clé, signature) n’est envoyée au serveur.
Une suggestion ou une demande d'outil ?
Vous avez repéré une erreur, vous souhaitez un nouvel outil ou vous avez un retour à partager ? Contactez-moi par email, je serais ravi d'échanger avec vous.