Generador de HMAC
Firma un mensaje con una clave secreta. No se transmite nada.
- Se ejecuta en tu navegador — tu texto no se envía a ningún sitio
- Sin registro, sin cuotas, gratis para usar tantas veces como quieras
Cómo funciona
Un HMAC demuestra dos cosas a la vez: que un mensaje no se ha alterado y que quien lo produjo posee el secreto compartido. Es lo que firma los webhooks, las solicitudes de API y los enlaces de descarga en gran parte de la web.
Distinto de un hash simple, en lo que importa
Cualquiera puede calcular el SHA-256 de un mensaje, así que un hash a secas no demuestra nada sobre quién lo hizo: cambia el mensaje, recalcula el hash y nadie lo nota. Un HMAC incorpora una clave secreta al cálculo, de modo que no se puede recalcular sin la clave. Ese es todo el sentido, y por eso las firmas de webhooks usan HMAC en lugar de un hash.
Verificar con seguridad
Cuando compruebes un HMAC en un servidor, compáralo con una función de tiempo constante: crypto.timingSafeEqual en Node, hash_equals en PHP. Un == normal termina en cuanto dos bytes difieren, y el tiempo que tarda revela cuánto de la firma era correcto, lo que basta para falsificar una con paciencia. Es un ataque real, no uno teórico.
Qué algoritmo elegir
SHA-256, a menos que algo especifique otra cosa. SHA-1 se incluye porque muchas API antiguas todavía exigen HMAC-SHA-1, y HMAC-SHA-1 no se ha roto como lo ha hecho el SHA-1 simple, pero no hay motivo para elegirlo para algo nuevo.
Hex o Base64
Es solo cuestión de lo que espere la otra parte. Hex es el doble de largo y más fácil de leer; Base64 es más compacto y habitual en las cabeceras HTTP. La misma firma se muestra en ambos.
Tu clave se queda aquí
Se genera con la propia API Web Crypto del navegador. La clave y el mensaje nunca se envían a ninguna parte, que es la única forma responsable de ofrecer esto: una herramienta de firma que sube tu secreto ha entregado justo lo que el secreto protege.
Generador de HMAC: preguntas
¿En qué se diferencia un HMAC de un hash?
Un hash puede recalcularlo cualquiera. Un HMAC necesita la clave secreta, así que demuestra quién lo produjo.
¿Qué algoritmo debería usar?
SHA-256, a menos que una API especifique otra cosa. SHA-1 se ofrece para sistemas más antiguos que todavía lo exigen.
¿Debería usar hex o Base64?
El que espere la otra parte. Se muestran ambos para la misma firma.
¿Por qué la comparación tiene que ser de tiempo constante?
Una comparación normal termina en la primera diferencia, y la diferencia de tiempo revela cuánto era correcto, lo suficiente para falsificar una firma.
¿Se envía mi clave secreta a algún sitio?
No. Todo funciona en tu navegador mediante la API Web Crypto.