Generador de HMAC (HMAC-SHA256 y más)

Introduce un mensaje y una clave secreta y obtén la firma HMAC con SHA-1, SHA-256, SHA-384 y SHA-512. La clave y el mensaje se quedan en tu navegador.

  • Gratis
  • Sin registro
  • Funciona en tu navegador
hmac-generator

100 % privado — el texto y los archivos se procesan en tu navegador y no se suben.

Cómo funciona

Marca la opción HMAC

En esta página ya viene activada, con una clave y un mensaje de ejemplo.

Introduce el mensaje y la clave

Escribe el mensaje exacto (por ejemplo, el cuerpo de la petición) y tu clave secreta.

Copia la firma

Copia el HMAC-SHA256 que necesites, en hexadecimal o en Base64.

Cómo generar un HMAC-SHA256

Para generar un HMAC-SHA256, escribe tu mensaje en el cuadro de texto, activa la opción HMAC, escribe tu clave secreta y copia la línea HMAC-SHA-256. Con la clave secret y el mensaje message, el resultado es 8b5f48702995c1598c573db1e21866a9b825d4a794d169d7060a03605796360b. La firma se calcula en tu navegador, así que la clave no se envía a ningún sitio.

¿Qué es un HMAC?

HMAC significa código de autenticación de mensajes basado en hash y está definido en la RFC 2104. Mezcla una clave secreta con una función hash de modo que el resultado demuestra dos cosas a la vez: que el mensaje no se ha alterado y que quien generó la firma conoce la clave. Un hash simple solo demuestra lo primero, porque cualquiera puede calcularlo.

Dónde se usan las firmas HMAC

  • Webhooks: Stripe, GitHub, Shopify y muchos otros firman cada petición, por ejemplo en la cabecera X-Hub-Signature-256, para que tu servidor compruebe quién la envió.
  • Firma de peticiones a API: AWS Signature Version 4 encadena varios pasos HMAC-SHA256.
  • JSON Web Tokens: el algoritmo HS256 es HMAC-SHA256 sobre la cabecera y el contenido del token.
  • Cookies de sesión y enlaces de un solo uso, que a menudo se protegen con un HMAC para que los usuarios no puedan manipularlos.

Cómo comprobar una firma sin errores

Para verificar un webhook, calcula el HMAC del cuerpo bruto exacto de la petición con tu secreto compartido y compáralo con la firma recibida. Usa una comparación de tiempo constante en tu código y no vuelvas a serializar el JSON antes, porque un solo espacio distinto cambia todo el HMAC. Esta página es ideal para reproducir una firma a mano cuando la comprobación de un webhook falla una y otra vez.

¿HMAC o hash simple?

Usa un SHA-256 simple para dar una huella a un contenido que cualquiera puede ver, como la descarga de un archivo. Usa HMAC-SHA256 siempre que la huella no deba poder falsificarse sin un secreto. No construyas nunca tu propio esquema hasheando juntos la clave y el mensaje; HMAC se diseñó para evitar la debilidad de extensión de longitud de ese esquema.

Privado por diseño

El hash lo calcula tu propio navegador con la API Web Crypto (y una rutina propia para MD5, que Web Crypto no ofrece). Nada de lo que escribes ni ningún archivo que sueltas se envía a un servidor, así que puedes calcular el hash de textos privados y archivos internos sin riesgo.

Preguntas frecuentes

¿Qué algoritmo HMAC debo usar?
HMAC-SHA256 es la opción estándar y la que esperan casi todos los servicios. HMAC-SHA512 da una firma más larga y HMAC-SHA1 es solo para sistemas antiguos que aún lo exigen.
¿Es seguro escribir aquí mi clave secreta?
La clave se usa solo dentro de tu navegador y no se transmite ni se guarda. Aun así, trata con cuidado los secretos de producción: prefiere claves de prueba y cambia una clave si la has pegado en un sitio en el que no confías del todo.
¿Por qué mi HMAC no coincide con el del servicio?
Comprueba que el mensaje es idéntico byte a byte, incluidos los saltos de línea y la codificación (UTF-8), que usas la misma clave sin espacios de más y que comparas el mismo formato de salida, hexadecimal o Base64.
¿Este conversor es gratis?
Sí. No hay registro ni límite, y funciona en tu navegador, así que nada de lo que escribes se envía a ningún servidor.
¿Funciona en el móvil?
Sí. Funciona en cualquier navegador móvil moderno y el resultado se actualiza mientras escribes.