Generador de firmas HMAC
CifradoTodo se ejecuta en tu navegador: no se sube nada
Firma un mensaje con una clave secreta usando HMAC-SHA1, HMAC-SHA256 o HMAC-SHA512, y obtén la firma en hexadecimal o Base64. La clave se procesa como bytes UTF-8, así que las claves con espacios, acentos o emoji producen exactamente lo que producen Node, Java y Python — el motivo más común de que una firma no cuadre al integrar una API. La clave es obligatoria: una clave vacía es aritméticamente válida, pero la firma que da no tiene relación con lo que quieres y parece perfectamente normal, así que aquí se rechaza en vez de mandarla a fallar en algún sitio sin explicación. Ojo también con que HMAC no es lo mismo que hashear clave + mensaje, que es vulnerable a la extensión de longitud.
Funciones
- Tres algoritmos: HMAC-SHA1, HMAC-SHA256 y HMAC-SHA512
- Un campo de clave aparte, así la clave nunca se pega dentro de un mensaje largo
- Clave y mensaje se procesan como bytes UTF-8, igual que Node, Java y Python
- Salida en hexadecimal o Base64
- Las claves vacías se rechazan en vez de producir una firma de aspecto plausible
- La clave solo interviene en el cálculo local
Cómo se usa
- Escribe la clave secreta en el campo de clave
- Pega el mensaje en el campo de entrada
- Elige el algoritmo y la codificación de salida, y pulsa Ctrl/⌘ + Enter o haz clic en Ejecutar
- Pulsa Copiar para llevarte la firma
Preguntas frecuentes
- ¿En qué se diferencia HMAC de hashear clave + mensaje?
- HMAC aplica un XOR de la clave sobre un bloque con relleno y hashea dos veces, una interior y otra exterior, y esa estructura lo hace inmune a los ataques de extensión de longitud. Un hash(clave + mensaje) construido sobre MD5, SHA-1 o SHA-256 deja que un atacante calcule más firmas válidas sin conocer la clave. Nunca armes esa cadena a mano para una API.
- ¿Por qué la clave es obligatoria?
- Una clave vacía produce la firma de «la cadena vacía como clave» — aritméticamente válida, inútil para ti e indistinguible de una firma de aspecto correcto. Mandarla a una API solo gana un fallo de verificación sin ninguna pista. Rechazarla aquí te ahorra ese viaje.
- Mi firma no coincide con la del otro lado. ¿Por qué?
- Comprueba tres cosas por orden: si la clave se trata como bytes UTF-8 (esta herramienta sí), si el mensaje lleva espacios o saltos de línea de más, y si coincide la codificación de salida (hex y Base64 son dos vistas de los mismos bytes). Las dos primeras cambian el resultado por completo.
- ¿Qué significa «este entorno no ofrece Web Crypto»?
- HMAC funciona con la API nativa del navegador crypto.subtle, que solo existe en un contexto seguro: https:// o localhost / 127.0.0.1. Abierta por http:// o desde una IP de red local no está disponible — es una política de seguridad del navegador. Usa una dirección https, u otra herramienta.
- ¿Se sube mi clave secreta?
- No. La clave y el mensaje solo intervienen en cálculos dentro de la memoria de tu navegador; la página no hace ninguna petición de red y sigue funcionando sin conexión. Por eso también es válido verificar una firma aquí — pero ten cuidado al pegar secretos de producción en una máquina compartida.
Herramientas relacionadas
SHA-3 / Keccak
CifradoCalcula resúmenes SHA-3, SHAKE y Keccak original en diez variantes, incluido el Keccak-256 que usa Ethereum. La longitud de SHAKE la fijas tú.
Hash
CifradoCalcula resúmenes MD5, SHA-1, SHA-256, SHA-512 o MD4 de cualquier texto, en bytes UTF-8 para que coincidan con openssl. En tu navegador.
Contraseñas
GeneradoresGenera contraseñas aleatorias fuertes con entropía en vivo, para que la fuerza sea un número comparable. Se quedan en memoria, nunca se suben.
Base64
CifradoConvierte texto a Base64 y al revés, con UTF-8 correcto para acentos, chino y emoji. Todo se ejecuta en tu navegador: no se sube nada.
Codificar URL
CifradoEscapa texto a la forma %XX y lo devuelve, tratando una URL completa y un valor de parámetro como trabajos distintos. Todo en tu navegador.
Entidades HTML
CifradoConvierte < > & y las comillas en entidades HTML y las devuelve en una sola pasada, así que &lt; da <, no un ángulo. En tu navegador.