HMAC-SHA1, SHA-256, SHA-384 et SHA-512 d'un texte ou d'un fichier, et vérification de signatures
Fonctionne dans votre navigateur. Rien de ce que vous saisissez n'est envoyé nulle part.Un HMAC prouve qu'un message vient de quelqu'un qui détient le secret partagé ; c'est ainsi qu'on vérifie un webhook. SHA-1, SHA-256, SHA-384 et SHA-512 sont pris en charge, sur du texte ou sur un fichier jusqu'à 200 Mo. Le secret ne quitte jamais votre navigateur, ce qui compte pour une clé de signature.
Cette page a été traduite automatiquement à partir de l'original anglais. Aucune personne n’a encore relu la traduction : c’est la version anglaise qui fait foi. Lire l'original en anglais
Choisissez SHA-1, SHA-256, SHA-384 ou SHA-512 sous Algorithme.
Saisissez la Clé secrète et indiquez si elle est écrite en Texte, Hex ou Base64.
Collez le message sous Texte, ou passez à Fichier et appuyez sur Choisir un fichier.
Copiez le résultat Hex, Base64 ou Base64URL avec son icône de copie ; Ctrl+Entrée copie l'hex.
Ce générateur HMAC calcule un hachage à clé d'un texte ou d'un fichier avec SHA-1, SHA-256, SHA-384 ou SHA-512 et affiche le résultat en hex, en Base64 et en Base64 compatible URL pendant que vous tapez. Il vérifie aussi : collez la signature attendue et il vous dit si elle correspond.
HMAC permet à deux systèmes de prouver qu'un message vient de quelqu'un qui détient un secret partagé et qu'il n'a pas été modifié en route. Les développeurs s'en servent quand le webhook d'un prestataire de paiement échoue à la vérification et qu'il faut savoir si le secret, le corps ou l'en-tête est en cause, quand ils écrivent une fonction de signature et la comparent à une réponse connue, ou quand la documentation d'une API montre une signature d'exemple à reproduire.
La clé peut être saisie en texte, en hex ou en Base64, car les prestataires publient leurs secrets dans les trois formats. La signature attendue peut être en hex ou en Base64 et garder le préfixe de son en-tête, comme sha256= chez GitHub ou le format t=,v1= de Stripe. La comparaison se fait en temps constant, comme votre serveur devrait le faire aussi.
Tout se passe dans votre navigateur via la Web Crypto API. La clé et le message ne sont jamais envoyés, journalisés ni enregistrés, pas même dans ce navigateur ; seuls l'algorithme et le format de clé choisis sont mémorisés. Des fichiers jusqu'à 200 Mo peuvent être signés, car le fichier entier doit tenir en mémoire d'un coup.
Quand la vérification d'un webhook échoue, la cause habituelle est le corps : la signature couvre les octets bruts exacts, et un corps JSON resérialisé par un framework ne correspondra pas. Outils liés : JWT Decoder, Base64 Encoder, Bcrypt Hash and Verify.
Choisissez SHA-256, tapez ou collez la clé secrète, puis tapez le message ou choisissez un fichier. La signature apparaît aussitôt en hex et en Base64 ; appuyez sur Copier à côté de celle qu'attend votre API. Si votre clé est donnée en hex ou en Base64 plutôt qu'en texte, changez d'abord le format de clé, car les mêmes caractères se décodent en octets différents.
Non. Le HMAC est calculé dans votre navigateur avec la Web Crypto API, et la clé et le message ne quittent jamais la page. Rien de ce que vous tapez n'est journalisé ni enregistré, pas même dans le stockage local. Seuls l'algorithme et le format de clé choisis sont mémorisés sur cet appareil pour la prochaine fois.
En général, le corps n'est pas, octet pour octet, ce que l'expéditeur a signé : un framework a analysé puis resérialisé le JSON, modifié les fins de ligne ou supprimé des espaces. Signez le corps brut. Autres causes : le mauvais secret (les clés de test et de production diffèrent), un secret hex traité comme du texte, ou de l'hex comparé à une signature Base64.
N'importe qui peut calculer un simple hachage, il ne prouve donc rien sur son auteur. HMAC y mêle une clé secrète, si bien que seul le détenteur de la clé peut produire la bonne valeur. Il est aussi conçu pour résister aux attaques par extension de longueur qui cassent l'approche naïve consistant à hacher la clé suivie du message.
Une comparaison de chaînes ordinaire s'arrête au premier caractère différent : sa durée révèle donc quelle part d'une signature devinée était juste. Mesuré sur de nombreuses requêtes, cela permet à un attaquant de construire une signature valide octet par octet. Cet outil compare chaque octet à chaque fois, et le code de votre serveur devrait faire de même.
Des messages texte de toute longueur raisonnable et des fichiers jusqu'à 200 Mo, car Web Crypto a besoin du message entier en mémoire. SHA-1, SHA-256, SHA-384 et SHA-512 sont pris en charge ; MD5 n'existe pas dans Web Crypto et ne devrait de toute façon pas servir pour de nouvelles signatures. Les clés doivent faire au moins un octet.
Toujours bloqué ? Poser une question sur Générateur HMAC et toute personne qui connaît la réponse peut répondre. Aucun compte nécessaire.