Sobre esta herramienta
Un HMAC prueba que un mensaje vino de alguien que conoce un secreto compartido y que no ha sido manipulado — el mecanismo detrás de los webhooks firmados, la firma de solicitudes de API y muchos esquemas de tokens. Introduce tu mensaje y clave secreta, elige SHA-256, SHA-384 o SHA-512 y obtén la firma en hexadecimal o Base64.
El cálculo usa la Web Crypto API nativa del navegador y ocurre por completo en tu dispositivo, así que tu clave secreta nunca se transmite. Se actualiza en vivo mientras escribes.
Preguntas frecuentes
¿Para qué se usa HMAC?
HMAC (código de autenticación de mensajes basado en hash) demuestra tanto que un mensaje no fue alterado como que proviene de alguien que conoce una clave secreta compartida; así es como servicios como Stripe o GitHub firman los payloads de webhooks para que puedas verificar su autenticidad.
¿HMAC es lo mismo que simplemente hashear el mensaje?
No. Un hash simple (SHA-256 solo del mensaje) puede recalcularlo cualquiera, así que no prueba nada sobre el origen. HMAC mezcla una clave secreta usando una construcción resistente a ataques de extensión de longitud, de modo que solo quien tenga la clave puede producir una firma válida.
¿Mi clave secreta se envía a algún sitio?
No. El HMAC se calcula localmente con la Web Crypto API del navegador (crypto.subtle). Tu clave y tu mensaje nunca salen de tu dispositivo.
¿Por qué la verificación de firma dice "no coincide" aunque la copié correctamente?
Las cabeceras de webhook suelen tener un prefijo como sha256=<hex>, usar distinta capitalización o tener espacios en blanco alrededor. El verificador normaliza mayúsculas/minúsculas y quita automáticamente un prefijo algorithm=, pero comprueba que hayas elegido el mismo algoritmo de hash y la misma codificación de clave (UTF-8/Hex/Base64) que usó el remitente.
¿Qué codificación de clave debería elegir?
La mayoría de las APIs te dan una cadena secreta en UTF-8 plano (por ejemplo, whsec_...) — usa UTF-8. Elige Hex o Base64 solo si la documentación del proveedor indica explícitamente que la clave está codificada así.