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.