Generador de HMAC
Genera una firma HMAC a partir de un mensaje y una clave secreta.
Cómo usar Generador de HMAC
- Pega el mensaje que quieres firmar.
- Introduce la clave secreta que ambas partes comparten.
- Elige un algoritmo (HMAC-SHA-256 si no estás seguro) y copia el resultado.
Acerca de Generador de HMAC
HMAC significa Hash-based Message Authentication Code (código de autenticación de mensajes basado en hash), definido en el RFC 2104. Mezcla una clave secreta dentro del proceso de hasheo, y esa única adición cambia lo que la salida demuestra. Un hash simple solo demuestra que algunos datos produjeron algún resumen; si un atacante puede cambiar el mensaje, simplemente puede recalcular el hash para que coincida, y nada parece estar mal. Con HMAC, no puede producir un código válido sin la clave, así que el receptor obtiene tanto integridad (el mensaje no fue alterado) como autenticidad (provino de alguien que posee la clave).
HMAC no es simplemente «hashear la clave y el mensaje juntos»; usa una construcción anidada, hasheando dos veces con dos valores de clave derivados. Esa estructura es lo que hace que HMAC sea inmune al ataque de extensión de longitud que afecta a SHA-256 y SHA-512 en bruto, donde un atacante que conoce un resumen puede añadir datos y calcular un nuevo resumen válido sin conocer la entrada original. Es una razón real por la que los esquemas ingenuos hash(secreto + mensaje) fallan y HMAC no.
Casi con toda seguridad ya has usado HMAC sin darte cuenta. Las firmas de webhooks de Stripe y GitHub son HMACs — el encabezado con el que comparas se calcula a partir del cuerpo bruto de la solicitud y tu clave de firma. La firma de solicitudes de AWS lo usa. También los JWT firmados con HS256, que puedes desmontar con nuestro decodificador de JWT. HMAC-SHA-256 es la opción habitual por defecto y la correcta para un trabajo nuevo. HMAC-MD5 es un caso interesante: todavía se considera aceptable como MAC pese a la debilidad de MD5 frente a colisiones, porque la seguridad de HMAC no depende de la resistencia a colisiones, pero no hay ninguna buena razón para elegirlo en un diseño nuevo.
Preguntas frecuentes
¿Cuál es la diferencia entre HMAC y un hash simple?
Un hash simple no demuestra nada si un atacante puede cambiar el mensaje, porque también puede recalcular el hash. HMAC incorpora una clave secreta, así que solo alguien con la clave puede producir un código válido, lo que te da autenticidad además de integridad.
¿Qué algoritmo debería elegir?
HMAC-SHA-256, a menos que algo específico indique lo contrario: es la opción habitual por defecto para webhooks, firma de API y JWT HS256.
¿Es seguro HMAC-MD5?
Todavía se considera aceptable como MAC, aunque el propio MD5 esté roto frente a colisiones, porque HMAC no depende de la resistencia a colisiones. Aun así, no lo elijas para un diseño nuevo: usa HMAC-SHA-256.
¿Por qué la firma de mi webhook no coincide?
Casi siempre porque los bytes del mensaje difieren. Firma el cuerpo exacto de la solicitud en bruto, no una versión re-serializada, y comprueba si hay un salto de línea final o una codificación de clave distinta.
¿Se almacenan mi mensaje y mi clave?
No. Ambos se envían a nuestro servidor porque los navegadores no pueden calcular la mayoría de estos algoritmos, luego se usan para el cálculo y se descartan de inmediato: nunca se registran ni se almacenan. Para una clave de firma de producción en vivo, hacer esto en tu propia máquina sigue siendo el hábito más seguro.

