Cómo generar un HMAC
- Pega el mensaje en la primera caja (etiquetada “Texto original”).
- Pega la clave secreta en la segunda caja (etiquetada “Texto modificado”).
- Elige un algoritmo: SHA-256 (el valor por defecto, y lo que usa casi toda API/webhook moderna), SHA-1, SHA-512 o MD5.
- Haz clic en el botón. El resultado muestra el digest HMAC tanto en hex como en Base64, listo para comparar o copiar.
Sin instalación, sin cuenta, sin subida, todo el cálculo ocurre dentro de tu pestaña del navegador.
Qué demuestra realmente HMAC
Un hash simple (MD5, SHA-256, SHA-512) demuestra que un mensaje no ha cambiado, pero cualquiera puede calcular uno, no demuestra quién lo produjo. HMAC (Código de Autenticación de Mensajes basado en Hash) soluciona eso mezclando una clave secreta compartida en el propio cálculo del hash, usando la construcción bien definida HMAC(K, M) = H((K' ⊕ opad) || H((K' ⊕ ipad) || M)). El resultado demuestra tanto integridad (el mensaje no fue manipulado) como autenticidad (quien produjo esta firma conoce la clave secreta), exactamente por eso es el bloque de construcción estándar detrás de la verificación de firmas de webhooks y la firma de peticiones de API.
Este es el mismo mecanismo detrás de:
- Cabeceras de firma de webhook, el
Stripe-Signaturede Stripe, elX-Hub-Signature-256de GitHub, elX-Shopify-Hmac-Sha256de Shopify y la mayoría de los demás proveedores de webhooks calculan todos un HMAC-SHA256 del cuerpo de la petición en bruto usando un secreto que solo conocen tu servidor y el proveedor, para que tu servidor pueda confirmar que un webhook realmente vino de ellos y no fue falsificado ni alterado en tránsito. - Firma de peticiones de API, esquemas como AWS Signature Version 4 construyen sus firmas sobre HMAC-SHA256, para que una petición pueda verificarse como proveniente genuinamente de alguien que posee la clave de acceso correcta.
Elegir un algoritmo
SHA-256 es el valor por defecto aquí porque es lo que usa casi toda API y proveedor de webhooks actual, es la elección correcta por defecto a menos que una integración concreta con la que trabajes documente algo distinto. SHA-1 y MD5 existen puramente por compatibilidad con sistemas antiguos o heredados que se construyeron alrededor de ellos antes de que SHA-256 se convirtiera en el estándar; esta herramienta calcula un valor HMAC-MD5 o HMAC-SHA1 igual de correcto exactamente por esa razón, no como recomendación de seguridad para nada nuevo.
Tu mensaje y tu clave secreta nunca salen de tu dispositivo
Los secretos de firma son credenciales reales, un secreto de webhook filtrado puede permitir a un atacante falsificar peticiones que tu servidor confiará. Muchas herramientas de “HMAC online” y “generador de firma de webhook” envían silenciosamente el mensaje y la clave que escribes a un servidor backend para calcular el resultado, lo cual es un riesgo innecesario para algo tan sensible. Esta herramienta nunca necesita un viaje de ida y vuelta al servidor: SHA-256/SHA-1/SHA-512 se ejecutan a través de la propia Web Crypto API nativa del navegador, y MD5 se ejecuta a través de una pequeña implementación en JavaScript, ambas enteramente dentro de tu pestaña del navegador. Ni el mensaje ni la clave secreta se transmiten, registran ni almacenan jamás en ningún sitio, y la pantalla de resultado ni siquiera repite ninguno de los dos valores (solo sus longitudes), así que nada sensible permanece en pantalla más tiempo del necesario.
Usos habituales
- Verificar manualmente una cabecera de firma de webhook (Stripe, GitHub, Shopify, o cualquier otro proveedor basado en HMAC) contra el payload en bruto que recibiste, mientras depuras una integración.
- Generar una firma HMAC de prueba para alimentar un endpoint de API o receptor de webhook que estás construyendo, antes de conectar la librería de firma real.
- Confirmar que el código de firma HMAC de un backend produce exactamente el digest que esperas, para un mensaje y secreto dados.
- Aprender en qué se diferencia HMAC de un hash simple, con firmas reales que puedes calcular y comparar tú mismo.
- Decodificar la cabecera/payload de un JWT con el Decodificador de JWT para ver qué algoritmo HMAC (
HS256, etc.) declara, y luego calcular ese mismo HMAC aquí de forma independiente para entender qué representa realmente el segmento de firma de un JWT. - Comprobar de forma independiente un token creado con el Generador de JWT recalculando su HMAC sobre su propio segmento
header.payloadcon la misma clave, y comparando la salida Base64 con el segmento de firma del propio token. - Contrastar una cabecera de firma codificada en Base64 con la salida hex de esta herramienta usando el Codificador Base64.

