Generador HMAC

Genera un HMAC (código de autenticación de mensajes basado en hash) a partir de texto y una clave secreta. Esta calculadora online admite HMAC-SHA-1, HMAC-SHA-256, HMAC-SHA-384 y HMAC-SHA-512, acepta claves como texto, hexadecimal o Base64 y devuelve la etiqueta en hexadecimal minúsculo. El cálculo se realiza localmente en el navegador.

Clave secreta
Entrada
0 caract. · 0 bytes
Probar:
Hash
✓ Procesamiento local en el navegador ✓ La entrada no se envía al servidor
Ejemplos
Mensaje vacío
Clave: secreto Algoritmo: hmac-sha-256 Formato de clave: text
Entrada (vacío)
Salida b68e2d86245aff01d1a854adf0e6da098f9db3a83e97cb6677a5de318ce938c8

Un mensaje vacío es válido. HMAC-SHA256 genera una etiqueta hexadecimal de 64 caracteres con la clave «secreto».

Clave de texto
Clave: secreto Algoritmo: hmac-sha-256 Formato de clave: text
Entrada ¡Hola, mundo!
Salida 4030c5224bf4240d403c8c915ea932c9af19292e8411011d5165a9f8bf0578cb

HMAC-SHA256 de «¡Hola, mundo!» con la clave de texto UTF-8 «secreto».

Otro mensaje y otra clave
Clave: clave Algoritmo: hmac-sha-256 Formato de clave: text
Entrada verificación
Salida 67f29aee2efafd46ee47024948cc98fd6989147a74d6bcb2e014451c8f82350f

Cambiar el mensaje o la clave produce una etiqueta HMAC-SHA256 completamente distinta.

Vector de prueba HMAC-SHA256 de RFC 4231
Clave: 0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b Algoritmo: hmac-sha-256 Formato de clave: hex
Entrada Hi There
Salida b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7

El caso 1 de RFC 4231 usa una clave de 20 bytes representada en hex y permite comprobar implementaciones HMAC-SHA256.

¿Qué es HMAC?

HMAC (Hash-based Message Authentication Code) combina una función hash criptográfica con una clave secreta. El algoritmo, definido en RFC 2104, convierte un mensaje de cualquier longitud en una etiqueta de autenticación de longitud fija. HMAC-SHA256 es la variante moderna más habitual; HMAC-SHA384 y HMAC-SHA512 producen etiquetas más largas, mientras que HMAC-SHA1 permanece en protocolos antiguos.

Quien posee la misma clave puede volver a calcular el HMAC y comparar las etiquetas. Una coincidencia demuestra que el mensaje no cambió y que fue creado por alguien que conoce el secreto compartido. HMAC es un código simétrico de autenticación, no cifrado ni una firma digital de clave pública.

Cómo funciona HMAC

De forma simplificada, HMAC calcula H((K′ ⊕ opad) || H((K′ ⊕ ipad) || mensaje)). La clave se adapta al tamaño de bloque del hash y se combina con dos constantes para las operaciones interna y externa. Así se evita el problema de extensión de longitud de construcciones ingenuas como hash(clave || mensaje).

HMAC-SHA1 genera 20 bytes (40 caracteres hex), HMAC-SHA256 32 bytes (64), HMAC-SHA384 48 bytes (96) y HMAC-SHA512 64 bytes (128). El generador muestra la etiqueta completa en hexadecimal minúsculo sin truncarla.

Cómo usar el generador HMAC
  1. Introduce el mensaje exacto.
  2. Selecciona HMAC-SHA256, HMAC-SHA1, HMAC-SHA384 o HMAC-SHA512.
  3. Elige el formato de clave: texto, hex o Base64.
  4. Introduce la clave secreta y copia el resultado hexadecimal.

El mensaje siempre se codifica como UTF-8. En modo texto la clave también usa UTF-8; hex y Base64 se decodifican primero a bytes. Los espacios, saltos de línea, mayúsculas, Unicode, algoritmo y formato de clave cambian el resultado.

HMAC para API, webhooks y JWT

HMAC se usa para autenticar solicitudes API, cargas de webhooks, datos de sesión y mensajes de protocolos. Para verificar, se recalcula la etiqueta sobre exactamente los mismos bytes con el secreto compartido y se compara en tiempo constante. Una marca temporal o nonce puede impedir ataques de repetición.

Sigue siempre la especificación: una API puede exigir una solicitud canónica, un webhook puede firmar el cuerpo HTTP sin procesar y JWT HS256 usa Base64URL, no hex. Esta herramienta calcula el HMAC del texto introducido, pero no crea cadenas específicas de proveedores, no convierte a Base64URL ni verifica automáticamente una etiqueta existente.

FAQ

Usa HMAC cuando dos partes comparten un secreto y necesitan detectar cambios intencionados o autenticar a quien conoce ese secreto. Cualquiera puede recalcular un hash SHA-256 normal después de modificar el mensaje. Para verificación pública sin secreto compartido, usa una firma digital.

Para HMAC-SHA256, una clave aleatoria de 32 bytes es una opción sólida. Genérala con un sistema criptográficamente seguro y guárdala en un gestor de secretos. Evita contraseñas, frases previsibles, secretos reutilizados y claves incluidas en código cliente.

Las claves HMAC son bytes, aunque suelen almacenarse como texto hex o Base64. El modo texto codifica UTF-8; hex y Base64 recuperan los bytes originales. “616263”, “YWJj” y “abc” representan los mismos bytes solo con sus formatos correspondientes.

El cálculo se ejecuta localmente mediante Web Crypto API; el mensaje y la clave no se envían al servidor para calcularlos. Si permites guardar preferencias, el campo de clave puede quedar en el almacenamiento local del navegador. Bórralo junto con los datos del sitio en equipos compartidos.

Usa el algoritmo exigido por el protocolo. HMAC-SHA256 es una opción común para integraciones nuevas; SHA384 y SHA512 son adecuados si la especificación los requiere. Conserva SHA1 únicamente por compatibilidad.

No. HMAC es una función unidireccional. Para verificarlo hacen falta el mensaje original y la misma clave: se vuelve a calcular la etiqueta y se compara con el valor esperado.

Selecciona el mismo algoritmo y formato de clave, introduce exactamente el mensaje y la clave y compara las etiquetas. En código usa una comparación de bytes en tiempo constante. La calculadora no incluye un campo de verificación automática.

Comprueba algoritmo, formato y bytes de la clave, codificación, mayúsculas, espacios, saltos de línea, serialización JSON y normalización Unicode. Para API y webhooks revisa también el cuerpo o cadena canónica exactos y si la etiqueta está en hex, Base64 o Base64URL.

HS256 utiliza HMAC-SHA256, pero firma el encabezado y la carga en Base64URL y codifica la firma en Base64URL sin relleno. Esta herramienta devuelve hexadecimal y no crea un JWT completo.
Herramientas relacionadas