HMAC (Hash-based Message Authentication Code) es una tecnología de autenticación de mensajes muy extendida y definida en RFC 2104. HMAC procesa una clave junto con un mensaje mediante una función hash para producir una firma de longitud fija. A diferencia de los hashes normales, HMAC exige conocer la clave para generar o verificar la firma, por lo que garantiza tanto la integridad como la autenticidad del mensaje.
**HMAC es una base clave de la seguridad moderna en APIs**. Stripe, GitHub, Shopify, Slack y Twilio usan HMAC-SHA256 para firmar eventos de webhook y asegurar que las solicitudes proceden realmente de la plataforma. AWS usa HMAC-SHA256 para la firma de solicitudes Signature V4. El algoritmo HS256 de JWT, en esencia, también es HMAC-SHA256. Entender HMAC es un primer paso sólido para dominar la seguridad de APIs.
**Cada plataforma tiene su propio formato de firma**: Stripe usa `t=timestamp,v1=hex_signature` y firma `timestamp.payload`; GitHub utiliza `X-Hub-Signature-256` con el formato `sha256=hex_signature`; Shopify envía `X-Shopify-Hmac-Sha256` como valor codificado en Base64. Esta herramienta puede analizar y verificar automáticamente estos formatos comunes.
**¿Por qué puede fallar la verificación de una firma?** Lo más habitual es que el formato del mensaje no coincida: quizá la plataforma firma `timestamp.payload` en lugar del cuerpo sin procesar del mensaje, el contenido incluye saltos de línea adicionales o la firma trae un prefijo (como `sha256=`) que hay que eliminar. Revisa con cuidado la documentación de la plataforma y compara usando el valor hexadecimal sin procesar.
Esta herramienta utiliza la **Web Crypto API** nativa del navegador (SubtleCrypto) para calcular HMAC, la misma base criptográfica que utilizan HTTPS y TLS. Todo el cálculo se realiza localmente; las claves y los mensajes no se envían nunca a ningún servidor. Puedes abrir el panel Network de las DevTools del navegador para comprobar que no se hacen solicitudes externas.