RH
Tool

HMAC Generator

Generate HMAC message authentication codes

Client-side processing

¿Qué es HMAC?

HMAC (Hash-based Message Authentication Code) es un tipo de código de autenticación de mensajes que usa una función hash criptográfica junto con una clave secreta. Se utiliza para verificar la integridad y autenticidad de los datos en APIs, webhooks y comunicaciones seguras.

Info

Generador HMAC Online - SHA256, SHA512 con Clave Secreta

¿Qué es HMAC y para qué se utiliza en desarrollo de software?

HMAC (Hash-based Message Authentication Code) es un tipo de código de autenticación de mensajes que combina una función hash criptográfica con una clave secreta. A diferencia de un hash simple, HMAC garantiza que el mensaje no ha sido alterado Y que proviene de alguien que conoce la clave secreta. Se usa ampliamente para: verificar webhooks de servicios como Stripe, GitHub, o Slack; autenticar solicitudes de API; firmar tokens JWT; verificar integridad de archivos descargados; y proteger comunicaciones entre microservicios.

¿Cómo funcionan los diferentes algoritmos HMAC disponibles?

HMAC puede usar diferentes funciones hash subyacentes, cada una con características diferentes. HMAC-SHA1 (160 bits) es legacy pero aún válido para muchas APIs existentes. HMAC-SHA256 (256 bits) es el estándar actual recomendado, ofreciendo excelente seguridad con buen rendimiento. HMAC-SHA384 y HMAC-SHA512 (384/512 bits) proporcionan seguridad adicional para casos especiales. La fortaleza del HMAC depende tanto del algoritmo elegido como de la entropía de la clave secreta utilizada.

¿Cómo verificar webhooks usando HMAC en tu aplicación?

Los proveedores de webhooks como Stripe o GitHub envían una firma HMAC en la cabecera de cada solicitud. Para verificar: 1) Extrae la firma de la cabecera (ej: X-Hub-Signature-256). 2) Calcula el HMAC del body crudo de la solicitud usando tu clave secreta. 3) Compara tu HMAC calculado con el recibido usando una comparación de tiempo constante (para prevenir timing attacks). 4) Rechaza la solicitud si no coinciden. Esta herramienta te ayuda a depurar y verificar que tus cálculos HMAC son correctos.

Preguntas frecuentes

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

Un hash simple (SHA-256 de "mensaje") puede ser calculado por cualquiera que conozca el mensaje. Un atacante podría modificar el mensaje, recalcular el hash, y enviar ambos. HMAC incorpora una clave secreta que solo conocen las partes autorizadas: sin la clave, es imposible generar un HMAC válido incluso conociendo el mensaje. Esto proporciona autenticación (verificas quién envió el mensaje) además de integridad (verificas que no fue alterado).

¿Qué longitud debe tener mi clave secreta para HMAC?

Tu clave secreta debería tener al menos la misma longitud que el output del hash: 32 bytes (256 bits) para HMAC-SHA256, 64 bytes para SHA-512. Claves más cortas reducen la seguridad; más largas no añaden beneficio adicional. Usa un generador criptográficamente seguro para crear claves (como crypto.randomBytes en Node.js), no contraseñas humanas. Almacena las claves de forma segura usando variables de entorno o servicios de gestión de secretos, nunca en código.

¿Por qué los outputs en hexadecimal y Base64 son diferentes?

Son simplemente representaciones diferentes de los mismos bytes. Hexadecimal usa 0-9 y a-f (2 caracteres por byte), resultando en un string más largo pero fácil de inspeccionar visualmente. Base64 usa A-Z, a-z, 0-9, +, / (aproximadamente 1.33 caracteres por byte), más compacto para transmisión. Las APIs suelen especificar qué formato esperan. Esta herramienta proporciona ambos para máxima compatibilidad y debugging.

¿HMAC y firma digital son lo mismo?

No exactamente. HMAC usa criptografía simétrica: ambas partes necesitan la misma clave secreta. Las firmas digitales (como RSA o ECDSA) usan criptografía asimétrica con par de claves pública/privada. HMAC es más eficiente computacionalmente y perfecto para comunicación entre sistemas que ya comparten un secreto. Las firmas digitales son preferidas cuando necesitas verificación pública sin revelar secretos, como en certificados SSL o software firmado.

© 2026
Roberto Hernando
|