Hashes/Cripto

HMAC Generator

Calcula el HMAC (Hash-based Message Authentication Code) de un texto o archivo con una clave secreta — con ocho algoritmos a la vez: MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA3-256, SHA3-512, RIPEMD-160.

HMAC (Hash-based Message Authentication Code) is a hash computed together with a secret key, proving a message hasn't changed and was sent by someone who knows that key. Unlike a plain hash, an HMAC can't be forged without knowing the secret.

How to use it

Common uses

Things to keep in mind

HMAC protects against tampering and confirms the sender's authenticity, but it doesn't encrypt the message itself — the content stays readable.

A mismatched HMAC is most often caused by different data encoding (e.g. JSON field order) or a stray whitespace or line break, not by a bug in the algorithm itself.

Artículo sobre esta herramienta: HMAC: en qué se diferencia un hash con clave de un hash normal

Preguntas frecuentes

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

Un hash normal solo demuestra que los datos no fueron alterados; HMAC además usa una clave secreta, por lo que demuestra tanto la integridad como que el emisor conocía el secreto compartido — sin la clave nadie puede producir un HMAC válido aunque conozca el algoritmo.

¿Qué algoritmo de hash debería elegir para HMAC?

HMAC-SHA256 es una opción moderna sólida por defecto. Opciones más antiguas como HMAC-MD5 o HMAC-SHA1 aún no están rotas como HMAC específicamente, pero se recomienda SHA-256 o más fuerte para sistemas nuevos.

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

No. El HMAC se calcula enteramente en tu navegador mediante la Web Crypto API — la clave y el mensaje nunca salen de tu dispositivo.

¿Por qué no se puede comparar un HMAC con el operador de igualdad normal?

Una comparación de cadenas normal se detiene en la primera discrepancia, y el tiempo de ejecución revela al atacante cuántos caracteres iniciales adivinó correctamente (timing attack). Se necesitan funciones de comparación en tiempo constante, como hash_equals en PHP.

¿Se puede usar la misma clave para varios propósitos distintos?

No se recomienda. Si la misma clave secreta se usa tanto para firmar webhooks como para otro fin, comprometer un sistema compromete automáticamente el otro — conviene generar una clave independiente para cada propósito.

Artículos: Hashes/Cripto

Hash Generator: en qué se diferencian MD5, SHA-1 y SHA-256

Por qué MD5 todavía se usa para verificar la integridad de archivos, pero no para contraseñas.

Checksum Verifier: cómo comprobar que un archivo no está dañado

Por qué una suma de comprobación coincidente confirma la integridad de un archivo, pero no quién lo creó.

Bcrypt: por qué las contraseñas se hashean lento y no rápido

Por qué un SHA-256 rápido es una mala elección para contraseñas, y un bcrypt lento es la correcta.

UUID: cómo se generan identificadores que casi nunca se repiten

Por qué se puede generar un UUID v4 de forma independiente en millones de máquinas sin riesgo de colisión.

Generador de contraseñas: qué es lo que realmente la hace fuerte

Por qué una contraseña larga hecha de palabras del diccionario es más fuerte que una corta con símbolos y números.

AES: cómo funciona el cifrado simétrico

Por qué la misma clave cifra y descifra los datos en AES, y en qué se diferencia del cifrado asimétrico.

Argon2: por qué este algoritmo ganó el concurso de hasheo de contraseñas

Cómo Argon2 defiende mejor contra ataques con GPU que los algoritmos de hasheo de contraseñas más antiguos.

Scrypt: por qué el algoritmo necesita tanta memoria

Por qué scrypt exige deliberadamente mucha memoria para dificultar el ataque en dispositivos ASIC.

TOTP: cómo funcionan los códigos de un solo uso en las apps de autenticación

Por qué el código de Google Authenticator funciona sin internet y se sincroniza con el servidor solo por la hora.

PBKDF2: el estándar de estiramiento de claves más antiguo

Por qué el número de iteraciones recomendado para PBKDF2 crece cada año.

X.509: qué hay dentro de un certificado SSL

Qué comprueba exactamente el navegador en el certificado de un sitio antes de mostrar el candado verde.

PGP: cómo funciona el cifrado con clave pública y privada

Por qué se puede compartir libremente una clave pública PGP, pero nunca la privada.