Generador HMAC
Calcula HMAC-SHA256, SHA-384, SHA-512, SHA-224, SHA-1, MD5, SHA3 o RIPEMD-160 de un mensaje con una clave en texto, hex o Base64. Salida hex o Base64 en tiempo real.
HMAC (RFC 2104) mezcla la clave en el hash dos veces: H((K ⊕ opad) || H((K ⊕ ipad) || message)). Las claves más largas que el bloque del hash se resumen primero. En el servidor, compara los MAC en tiempo constante.
¿Qué es Generador HMAC?
Calcula un código de autenticación de mensajes basado en hash con clave (HMAC, RFC 2104) para un mensaje y una clave secreta. Admite SHA-2, SHA-3, SHA-1, MD5 y RIPEMD-160, claves en texto, hex o Base64, y muestra el MAC en hex en minúsculas/mayúsculas o en Base64 mientras escribes.
Cómo usar Generador HMAC
- Escribe el Mensaje (texto, o cambia la codificación a Hex para bytes en bruto).
- Introduce la Clave secreta y elige si es texto (UTF-8), Hex o Base64.
- Elige el Algoritmo, p. ej., HMAC-SHA-256.
- Elige el Formato de salida y copia el HMAC.
Ejemplo
Mensaje "what do ya want for nothing?", clave "Jefe", HMAC-SHA-256
5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843
Caso de prueba 2 de RFC 4231.
Cuándo usar Generador HMAC
Úsalo para verificar firmas de webhooks (Stripe, GitHub, Shopify, Slack), firmar peticiones de API, depurar los pasos de firma al estilo de AWS o comprobar vectores de prueba HMAC. No sirve para hashear contraseñas (usa bcrypt o Argon2) y no es una firma digital: cualquiera que tenga la clave puede crear el MAC.
Cómo funciona Generador HMAC
HMAC(K, m) = H((K′ ⊕ opad) ‖ H((K′ ⊕ ipad) ‖ m)), donde K′ es la clave rellenada con ceros hasta el tamaño de bloque del hash (las claves más largas que el bloque se hashean primero), e ipad = 0x36 y opad = 0x5C repetidos. Esta construcción sigue siendo segura incluso con hashes como MD5 y SHA-1, cuya resistencia a colisiones está rota. Los digests provienen de hash-wasm y los resultados coinciden con los vectores de prueba de RFC 4231 y RFC 2202.
Casos de Uso Comunes
- Verificar una firma
X-Hub-Signature-256de GitHub o una firma de webhook de Stripe - Reproducir la firma de una petición de API al depurar
- Comprobar los vectores de prueba HMAC de RFC 4231
- Generar valores HMAC-SHA1 para depurar OAuth 1.0 heredado o TOTP
- Comparar las salidas de dos lenguajes que no coinciden
Nota de Seguridad
La clave y el mensaje se quedan en tu navegador. En el servidor, compara los MAC con una función de tiempo constante para evitar ataques de temporización.
Preguntas Frecuentes
¿Por qué mi HMAC no coincide con la cabecera del webhook?
Comprueba que hasheas el cuerpo de la petición en bruto byte a byte (sin JSON reformateado), el secreto exacto (algunos proveedores lo dan en Base64 o con un prefijo como whsec_) y la codificación de salida esperada: GitHub usa hex y Shopify usa Base64.
¿HMAC-SHA1 o HMAC-MD5 siguen siendo seguros?
Como MAC no tienen ataques prácticos, porque HMAC no depende de la resistencia a colisiones. Se consideran heredados; usa HMAC-SHA-256 o superior en sistemas nuevos.
¿La clave puede estar vacía?
RFC 2104 lo permite y la herramienta lo calcula, pero una clave vacía no aporta ninguna seguridad.
¿HMAC es lo mismo que hashear clave + mensaje?
No. Un simple hash(key + message) es vulnerable a ataques de extensión de longitud con SHA-2; el doble hash de HMAC lo evita.