logo
GeekFormat

Generació i Verificació HMAC

Algorisme de hahi

La longitud de clau recomanada correspon a la longitud de la sortida de resum: SHA-1=20 bytes, SHA-256=32 bytes, SHA- 84=48 bytes, SHA-512=64 bytes

Contingut del missatge0 caràcters
Signatura HMAC (Hex)
Esperant entrada...

Notes

  • HMAC Genera signatures basades en clau i hahi algoritmes per autenticació de codi font i integritat
  • Implementació de SHA-1 / SHA- 56 / SHA- 384 / SHA-512
  • Generar i validar ambdós localment als navegadors, sense pujar dades
  • La validació usa una longitud fixa pels bytes per reduir les diferències de sèrie de temps

Generador i verificador gratuït de signatures HMAC en línia, compatible amb HMAC-SHA256/384/512/SHA1/MD5. Ideal per verificar webhooks de Stripe, GitHub i Shopify amb sortida en Hex, Base64 o Base64URL.

Relacionats

Casos d'ús

  • Desenvolupament de webhooks de Stripe: depura callbacks de pagament i comprova que la capçalera `Stripe-Signature` sigui correcta
  • Integració de webhooks de GitHub: verifica la signatura `X-Hub-Signature-256` en esdeveniments Push i Pull Request
  • Sincronització de comandes de Shopify: valida la signatura `X-Shopify-Hmac-Sha256` dels webhooks d'actualització de comandes
  • Signatures de bots de Slack: verifica `X-Slack-Signature` en callbacks d'esdeveniments de Slack
  • Depuració de JWT: signa JWT amb HS256 i comprova la validesa del token
  • Signatura de peticions d'API: implementa AWS Signature V4 o esquemes de signatura personalitzats

Característiques

  • Compatibilitat amb múltiples algorismes: HMAC-SHA256/384/512, SHA1 i MD5, per cobrir tant APIs modernes com sistemes heretats
  • Verificació de signatures de webhooks: suport integrat per als formats de Stripe, GitHub, Shopify i Slack amb anàlisi automàtica
  • Tres formats de sortida: Hex, Base64 i Base64URL, perquè encaixi amb qualsevol API o plataforma
  • Generació en temps real: recalcul automàtic 300 ms després de cada canvi, sense haver de prémer cap botó
  • Mode de verificació de signatures: enganxa la signatura esperada i veu a l'instant si coincideix
  • Detecció de longitud de clau: control en temps real de la força de la clau amb avisos si és massa curta
  • Processament al navegador: càlcul local amb Web Crypto API, sense pujar mai les claus al servidor
  • Suport per a JWT: la sortida HMAC-SHA256 es pot utilitzar directament per signar amb HS256

Com usar-ho

  1. Selecciona l'algorisme: HMAC-SHA256 és el valor per defecte i el recomanat per a APIs modernes
  2. Introdueix el missatge: enganxa el cos cru del missatge o el contingut de la petició d'API
  3. Introdueix la clau: escriu el Webhook Secret o l'API Secret
  4. Tria el format: selecciona la sortida adequada (Hex per a Stripe, Base64URL per a JWT)
  5. Verifica la signatura: canvia al mode de verificació i enganxa la signatura esperada per comparar-la

Preguntes freqients

Quina diferència hi ha entre HMAC i un hash normal?

Les funcions de hash habituals (com SHA256) només calculen un resum del missatge; qualsevol persona pot generar-lo. HMAC incorpora una clau secreta al procés de hash, de manera que només qui coneix aquesta clau pot crear o verificar una signatura vàlida. Per això HMAC garanteix tant la integritat com l'autenticitat del missatge, mentre que un hash normal només comprova la integritat.

Com es verifiquen les signatures de webhooks de Stripe, GitHub o Shopify?

Cada plataforma dona format a la signatura a la seva manera: Stripe fa servir la capçalera `Stripe-Signature` amb el format `t=timestamp,v1=hex_signature` i signa la cadena `timestamp.payload`; GitHub utilitza `X-Hub-Signature-256` amb el format `sha256=hex_signature`; Shopify envia `X-Shopify-Hmac-Sha256` amb un valor codificat en Base64. Aquesta eina pot verificar directament aquests formats habituals.

Quina diferència hi ha entre les sortides Hex, Base64 i Base64URL?

Hex és el format hexadecimal (0-9, A-F): és fàcil de llegir i molt pràctic per depurar. Base64 és una codificació de 64 caràcters, més compacta i adequada per inserir valors en JSON. Base64URL és la variant segura per a URL (substitueix +/ per -_), molt utilitzada en capçaleres JWT i paràmetres d'URL.

Quin algorisme HMAC hauria d'utilitzar?

**HMAC-SHA256 és l'opció recomanada**: és l'estàndard actual per a APIs i webhooks (l'utilitzen Stripe, GitHub, Shopify i Slack), genera una sortida de 32 bytes i té compatibilitat pràcticament universal. SHA-512 ofereix més marge de seguretat, però produeix una sortida més llarga (64 bytes). SHA1 només té sentit en sistemes antics. MD5 està obsolet i només s'hauria d'usar amb APIs molt velles que encara l'exigeixin.

Quins requisits ha de complir la longitud de la clau?

Com més llarga és la clau, més segura resulta. Es recomana un mínim de 16 caràcters (128 bits) i, per a producció, 32 caràcters o més. L'eina comprova la longitud de la clau en temps real i avisa si és massa curta. Genera les claus amb un generador aleatori criptogràficament segur, no amb contrasenyes simples ni cadenes previsibles.

Per què la verificació de la signatura indica que no coincideix?

Les causes més habituals són: 1) el missatge conté espais o salts de línia addicionals; 2) la plataforma signa una cadena composta (per exemple, Stripe signa `timestamp.payload`); 3) la signatura inclou un prefix que cal retirar, com `sha256=` a GitHub; 4) s'ha triat un algorisme diferent. Comprova que totes dues bandes facin servir exactament els mateixos paràmetres.

Es pot utilitzar HMAC per signar JWT?

Sí. L'algorisme HS256 de JWT és HMAC-SHA256, i HS512 és HMAC-SHA512. La sortida HMAC-SHA256 d'aquesta eina es pot utilitzar directament com a contingut de signatura per a HS256. En un JWT, la capçalera i el payload es codifiquen en Base64URL i després se signen amb HS256.

És segura aquesta eina HMAC en línia?

Aquesta eina utilitza la Web Crypto API per fer tots els càlculs localment al navegador. Les claus i els missatges no s'envien mai a cap servidor. Ho pots comprovar obrint el panell Network de les DevTools del navegador: no es fan peticions externes. És adequada per a proves i desenvolupament; per a claus de producció molt sensibles, és millor utilitzar eines locals fora de línia.

Es poden falsificar les signatures HMAC?

No, sempre que la clau es mantingui secreta i l'algorisme de hash sigui resistent a col·lisions. Amb claus prou llargues i aleatòries, no es coneixen atacs capaços de falsificar signatures HMAC vàlides. Rotar les claus periòdicament també és una bona pràctica de seguretat.

Què és Generació i Verificació HMAC?

HMAC (Hash-based Message Authentication Code) és una tecnologia d'autenticació de missatges molt estesa i definida a RFC 2104. HMAC combina una clau amb un missatge dins d'una funció de hash per produir una signatura de longitud fixa. A diferència dels hashes normals, HMAC exigeix conèixer la clau per generar o verificar la signatura, i per això garanteix tant la integritat com l'autenticitat del missatge.

**HMAC és una peça bàsica de la seguretat moderna en APIs**. Stripe, GitHub, Shopify, Slack i Twilio utilitzen HMAC-SHA256 per signar esdeveniments de webhook i assegurar que les peticions provenen realment de la plataforma. AWS també fa servir HMAC-SHA256 en la signatura de peticions Signature V4. L'algorisme HS256 de JWT, en essència, és HMAC-SHA256. Entendre HMAC és un primer pas sòlid per dominar la seguretat d'APIs.

**Cada plataforma té el seu propi format de signatura**: Stripe utilitza `t=timestamp,v1=hex_signature` i signa `timestamp.payload`; GitHub fa servir `X-Hub-Signature-256` amb el format `sha256=hex_signature`; Shopify envia `X-Shopify-Hmac-Sha256` amb un valor codificat en Base64. Aquesta eina pot analitzar i verificar automàticament aquests formats comuns.

**Per què pot fallar la verificació d'una signatura?** El motiu més freqüent és una diferència en el format del missatge: potser la plataforma signa `timestamp.payload` en lloc del cos cru del missatge, el contingut inclou salts de línia extra o la signatura porta un prefix (com `sha256=`) que s'ha d'eliminar. Revisa amb cura la documentació de la plataforma i compara amb el valor hexadecimal cru.

Aquesta eina utilitza la **Web Crypto API** nativa del navegador (SubtleCrypto) per calcular HMAC, la mateixa base criptogràfica que fan servir HTTPS i TLS. Tot el càlcul es fa localment; les claus i els missatges no s'envien mai a cap servidor. Pots obrir el panell Network de les DevTools del navegador per comprovar que no es fan peticions externes.