araç köşesi

Generador HMAC (SHA-256, SHA-384, SHA-512, SHA-1)

Calcule una firma HMAC a partir de un mensaje y una clave secreta, y compare una firma de webhook con el valor esperado

Sus datos se quedan con usted. La conversión ocurre dentro del navegador; no se envía nada a ningún servidor.

Cómo funciona

Pegue en el panel izquierdo el mensaje que quiere firmar y escriba en el campo Clave secreta la clave que le dio el servicio; la firma HMAC aparece a la derecha mientras escribe. Si está probando el webhook de un proveedor de pagos, pegue el cuerpo de la solicitud tal como llegó, sin añadir ni un espacio: un salto de línea de más basta para cambiar toda la firma. Ponga en Firma esperada el valor que el servicio envía en su encabezado; la herramienta quita prefijos como sha256=, detecta si el valor está en hexadecimal o en Base64 e indica COINCIDE o NO COINCIDE en la línea de resultado. Si su clave es una serie de bytes aleatorios entregada en hexadecimal, ponga Formato de la clave en Bytes hexadecimales: leídos como texto, los mismos caracteres forman una clave totalmente distinta. La mayoría de los servicios usan SHA-256; si la documentación dice HmacSHA512, elija SHA-512. El cálculo lo hace el motor criptográfico integrado de su navegador: ni el mensaje ni la clave salen de esta página, y la clave nunca se escribe en los registros de errores.

Esta herramienta también se busca como generador hmac, calcular hmac sha256, verificar firma webhook, hmac sha512.

¿Qué es HMAC?

HMAC (código de autenticación de mensajes basado en hash) produce una firma de longitud fija a partir de un mensaje y una clave secreta (RFC 2104). La clave se mezcla con dos valores de relleno distintos y pasa dos veces por la función hash elegida. El resultado demuestra que el mensaje no cambió y que lo generó alguien que conoce la clave. Los webhooks, las solicitudes firmadas a una API y las cookies de sesión se protegen de esta forma.

¿Qué es Firma de webhook?

Una firma de webhook es el valor HMAC que un servicio añade en un encabezado cuando le envía una notificación. El servicio firma el cuerpo con una clave secreta que comparte con usted; usted firma el mismo cuerpo con la misma clave y compara su resultado con el encabezado. Si los dos coinciden, la notificación viene de verdad de ese servicio. El nombre del encabezado cambia según el servicio, y el valor suele llevar el prefijo sha256= o venir en Base64.

¿Qué diferencia hay entre HMAC y una firma digital?

En HMAC, quien firma y quien verifica comparten la misma clave secreta; cualquiera de los dos pudo haber generado la firma, así que HMAC no demuestra ante un tercero quién firmó. Una firma digital (RSA, ECDSA) usa dos claves: solo el dueño firma y cualquiera verifica con la clave pública. HMAC es mucho más rápido y basta cuando dos sistemas confían entre sí, como en webhooks y API; los contratos y la publicación de software, donde quien firma no debe poder negarlo, necesitan una firma digital.

¿La firma no coincide? Las cuatro causas habituales

HMAC reacciona a cada byte del mensaje. La causa más común de que una firma de webhook falle es que el cuerpo que usted firma no es el que se firmó: dar formato al JSON, cambiar el orden de los campos o añadir un salto de línea final cambia el resultado. Firme siempre el cuerpo en bruto, tal como llegó.

Las otras causas: la clave leída en el formato equivocado (una clave hexadecimal leída como texto), el algoritmo equivocado (SHA-1 en lugar de SHA-256) y comparar escrituras distintas (hexadecimal de un lado, Base64 del otro). Algunos servicios firman una marca de tiempo junto con el cuerpo; en ese caso la cadena firmada es algo como «marca.cuerpo». Revise la documentación.

  • Cuerpo modificado: espacios, saltos de línea, orden de los campos
  • Formato de la clave: clave hexadecimal leída como texto
  • Algoritmo: SHA-1, SHA-256 y SHA-512 confundidos
  • Salida: hexadecimal comparado con Base64, o marca de tiempo añadida al mensaje firmado

¿Qué algoritmo conviene elegir?

El que use la otra parte para firmar. La documentación del servicio lo indica, y la longitud de la firma lo delata: en hexadecimal, 40 dígitos son SHA-1, 64 SHA-256, 96 SHA-384 y 128 SHA-512. Si diseña su propio sistema, HMAC-SHA256 es suficiente y es la opción con más soporte.

La debilidad conocida de SHA-1 ante colisiones no rompe directamente HMAC, pero SHA-1 ya no se usa en diseños nuevos y aquí solo se ofrece por compatibilidad con sistemas antiguos. No hay HMAC con MD5: el motor criptográfico de los navegadores no admite MD5, y esta herramienta usa ese motor en lugar de un algoritmo escrito a mano.

Preguntas frecuentes

¿Cómo se calcula un HMAC SHA256?

Pegue el mensaje en el panel izquierdo y la clave secreta en su campo, y deje el algoritmo en SHA-256. La firma hexadecimal de 64 dígitos aparece a la derecha; para obtener Base64, cambie el formato de salida. El cálculo se hace en su navegador.

¿Qué diferencia hay entre HMAC y un hash normal?

Cualquiera puede calcular un hash normal: quien cambia el mensaje también genera el hash nuevo. HMAC mete una clave secreta en el cálculo: sin ella, un mensaje modificado no puede obtener una firma válida. Así HMAC demuestra que el mensaje viene de alguien que conoce la clave y que no se alteró por el camino.

¿Es seguro escribir mi clave secreta en esta página?

La clave se queda en su navegador: el código de la herramienta no puede hacer solicitudes de red y, aunque ocurra un error, la clave no aparece en el registro de errores, donde se sustituye por [gizli]. Aun así, no use una clave de producción en una computadora compartida; use una clave de prueba.

¿Por qué no sale ningún resultado con la clave vacía?

HMAC necesita una clave por definición, y el motor criptográfico del navegador rechaza una clave vacía. Para una suma de verificación de un archivo sin clave, use la herramienta para verificar la suma de verificación de un archivo.