tigtools

Generador de HMAC

Calcula un código de autenticación de mensajes con clave (HMAC) para un mensaje y una clave secreta, o comprueba una firma recibida. La clave y el mensaje permanecen en tu navegador.

Se ejecuta en tu navegador Sin registro

La clave y el mensaje se procesan solo en esta pestaña del navegador y nunca se envían a ningún sitio. Aun así, evita pegar secretos de producción activos en un equipo compartido o que no sea de confianza.
Formato de clave

Se firma como UTF-8 exactamente tal como lo escribiste. Un espacio final o un salto de línea cambia el resultado.

Formato de salida

Pega una firma en hexadecimal (sin importar mayúsculas o minúsculas) o Base64 para compararla con el resultado anterior.

Cómo usarla

  1. Introduce la clave secreta y elige si está en texto sin formato o en bytes hexadecimales.
  2. Pega el mensaje, por ejemplo, el contenido de un webhook exactamente como lo recibiste.
  3. Elige el algoritmo y la codificación de salida que usa tu servicio; el HMAC se actualiza mientras escribes.
  4. Para comprobar una firma, pégala en el campo de verificación y busca «Coincide».

Cómo funciona

HMAC (RFC 2104) combina una clave secreta con una función hash para generar una firma que solo puede crear alguien que tenga la clave. Servicios como los webhooks y las solicitudes API firmadas envían un HMAC con cada mensaje para que el destinatario pueda comprobar que el mensaje es auténtico y no se ha modificado.

Esta herramienta usa la Web Crypto API de tu navegador (crypto.subtle.importKey y sign) y se ha verificado con los vectores de prueba RFC 4231 y RFC 2202. La clave de texto y el mensaje se codifican en UTF-8. Una clave hexadecimal se decodifica a bytes sin procesar; se ignoran los espacios, los dos puntos y el prefijo 0x inicial. HMAC-SHA-256 es la opción más habitual; HMAC-SHA-1 todavía se considera seguro como MAC, pero se usa principalmente en API antiguas.

Si tu firma no coincide, comprueba los detalles que suelen variar: los bytes exactos del mensaje (muchos proveedores de webhooks firman el cuerpo sin procesar, no el JSON con formato aplicado), una marca de tiempo o un prefijo que el proveedor añada a la cadena firmada, si la clave se usa como texto o debe decodificarse primero desde hexadecimal o Base64, y si la firma esperada está en hexadecimal o Base64 y lleva un prefijo como «sha256=», que debes quitar antes de compararla.

Ejemplos

Caso de prueba RFC 4231

La clave «Jefe» (texto), el mensaje «what do ya want for nothing?» y HMAC-SHA-256 generan 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Usa «Probar un ejemplo» para cargarlo.

Verificar la firma de un webhook

Un proveedor envía el encabezado X-Signature: sha256=… con cada solicitud. Pega el cuerpo original de la solicitud como mensaje, usa el secreto de tu webhook como clave, selecciona HMAC-SHA-256 y Hex, y pega en el campo de verificación el valor que aparece después de «sha256=».

Una clave codificada en hexadecimal

Algunos sistemas proporcionan claves como cadenas hexadecimales, por ejemplo 0b0b0b…. Selecciona Hex como formato de clave para que la herramienta firme con los bytes decodificados; si usas esa misma cadena como texto, el resultado será completamente distinto.

Preguntas frecuentes

¿Cuál es la diferencia entre un HMAC y un hash simple?

Cualquiera puede calcular un hash simple, como SHA-256, de un mensaje. Un HMAC también depende de una clave secreta, así que solo alguien que tenga la clave puede generarlo o comprobarlo. Esto demuestra que el mensaje proviene de alguien que tiene la clave y que no se ha alterado.

¿Por qué mi HMAC no coincide con el de mi servidor?

Casi siempre, los bytes de entrada son distintos: los finales de línea, los espacios en blanco, el orden de las claves de JSON, la codificación de caracteres o una clave que debería decodificarse desde hexadecimal o Base64. Comprueba también que uses la misma codificación (hexadecimal o Base64) y quita prefijos como «sha256=».

¿Se envía mi clave secreta a algún sitio?

No. La clave y el mensaje solo se usan con la Web Crypto API en esta pestaña del navegador. No se suben, almacenan ni incluyen en las herramientas de analítica.

¿HMAC-SHA-1 sigue siendo seguro?

Las colisiones de SHA-1 no rompen HMAC-SHA-1 directamente, y sigue aceptándose por compatibilidad. Para sistemas nuevos, usa HMAC-SHA-256 o una opción más segura.

Privacidad

La clave, el mensaje y el resultado solo existen en esta pestaña del navegador. No se suben, almacenan ni envían a analítica; solo se registra un evento anónimo que indica que se usó la herramienta.