Generador HMAC

Calcula un HMAC de cualquier mensaje con una clave secreta — en tu navegador, usando Web Crypto. Elige HMAC-SHA-1, HMAC-SHA-256, HMAC-SHA-384, o HMAC-SHA-512, cambia la clave entre texto y hex, escoge hex o base64 como salida, y opcionalmente pega un resumen esperado para verificar. Hay cinco ajustes preestablecidos de API comunes. La clave nunca sale de esta pestaña.

0 bytes · 0 bits

0 bytes
Algoritmo y salida
Salida
HMAC

Ajustes preestablecidos de API comunes haz clic para cargar
Acerca de HMAC
  • HMAC es un hash con clave: H((K ⊕ opad) || H((K ⊕ ipad) || mensaje)). A diferencia de un hash simple, un atacante sin la clave no puede reproducir el resumen.
  • Web Crypto lo expone como crypto.subtle.sign("HMAC", key, data) — la clave se importa con name: "HMAC" + el nombre del hash. El resultado es binario; la página lo codifica a hex o base64 para mostrarlo.
  • Bytes de la clave vs. caracteres de la clave: el secreto son los bytes en crudo, no los caracteres. Una clave ASCII de 32 caracteres son 32 bytes; una cadena hex de 64 caracteres son 32 bytes. Usa el modo Hex para pegar una clave codificada en hex (por ejemplo, el valor decodificado de un whsec_… de Stripe).
  • Recomendado: HMAC-SHA-256 es el predeterminado para las API modernas (webhooks de GitHub, Stripe, Slack, JWT HS256). HMAC-SHA-1 todavía aparece en OAuth 1.0a / Twitter y en algunos sistemas de webhook antiguos.
  • El modo de verificación usa una comparación de cadenas en tiempo constante para que un intento incorrecto no filtre información a través del tiempo. La comparación se ejecuta cada vez que escribes en el campo esperado; el mensaje, la clave, el algoritmo y el formato de salida deben coincidir con lo que usó el emisor.
  • Manejo de prefijos: GitHub envía sha256=<hex>, Stripe envía v1=<hex>. El cuadro de verificación entiende la forma nombre=<valor> y solo compara la parte del valor.
  • Todo se ejecuta en esta pestaña. La clave, el mensaje y el resumen nunca salen de tu navegador.