Generador de HMAC

Genera una firma HMAC (SHA-256, SHA-1, SHA-512 o MD5) a partir de un mensaje y una clave secreta, todo en tu navegador. Salida en hex y Base64.

🌐 English

🔒 Privado por diseño: tu texto se procesa localmente en tu navegador; nada se sube nunca a ningún servidor.

Cómo generar un HMAC

  1. Pega el mensaje en la primera caja (etiquetada “Texto original”).
  2. Pega la clave secreta en la segunda caja (etiquetada “Texto modificado”).
  3. Elige un algoritmo: SHA-256 (el valor por defecto, y lo que usa casi toda API/webhook moderna), SHA-1, SHA-512 o MD5.
  4. Haz clic en el botón. El resultado muestra el digest HMAC tanto en hex como en Base64, listo para comparar o copiar.

Sin instalación, sin cuenta, sin subida, todo el cálculo ocurre dentro de tu pestaña del navegador.

Qué demuestra realmente HMAC

Un hash simple (MD5, SHA-256, SHA-512) demuestra que un mensaje no ha cambiado, pero cualquiera puede calcular uno, no demuestra quién lo produjo. HMAC (Código de Autenticación de Mensajes basado en Hash) soluciona eso mezclando una clave secreta compartida en el propio cálculo del hash, usando la construcción bien definida HMAC(K, M) = H((K' ⊕ opad) || H((K' ⊕ ipad) || M)). El resultado demuestra tanto integridad (el mensaje no fue manipulado) como autenticidad (quien produjo esta firma conoce la clave secreta), exactamente por eso es el bloque de construcción estándar detrás de la verificación de firmas de webhooks y la firma de peticiones de API.

Este es el mismo mecanismo detrás de:

Elegir un algoritmo

SHA-256 es el valor por defecto aquí porque es lo que usa casi toda API y proveedor de webhooks actual, es la elección correcta por defecto a menos que una integración concreta con la que trabajes documente algo distinto. SHA-1 y MD5 existen puramente por compatibilidad con sistemas antiguos o heredados que se construyeron alrededor de ellos antes de que SHA-256 se convirtiera en el estándar; esta herramienta calcula un valor HMAC-MD5 o HMAC-SHA1 igual de correcto exactamente por esa razón, no como recomendación de seguridad para nada nuevo.

Tu mensaje y tu clave secreta nunca salen de tu dispositivo

Los secretos de firma son credenciales reales, un secreto de webhook filtrado puede permitir a un atacante falsificar peticiones que tu servidor confiará. Muchas herramientas de “HMAC online” y “generador de firma de webhook” envían silenciosamente el mensaje y la clave que escribes a un servidor backend para calcular el resultado, lo cual es un riesgo innecesario para algo tan sensible. Esta herramienta nunca necesita un viaje de ida y vuelta al servidor: SHA-256/SHA-1/SHA-512 se ejecutan a través de la propia Web Crypto API nativa del navegador, y MD5 se ejecuta a través de una pequeña implementación en JavaScript, ambas enteramente dentro de tu pestaña del navegador. Ni el mensaje ni la clave secreta se transmiten, registran ni almacenan jamás en ningún sitio, y la pantalla de resultado ni siquiera repite ninguno de los dos valores (solo sus longitudes), así que nada sensible permanece en pantalla más tiempo del necesario.

Usos habituales

Cómo funciona, en imágenes

Captura de pantalla de la herramienta Generador de HMAC con la entrada de ejemplo «Everything on SysFenix runs in your browser. You…», Hash algorithm en SHA-256 (recommended)
Generador de HMAC en pleno proceso: la entrada de ejemplo «Everything on SysFenix runs in your browser. You…», Hash algorithm en SHA-256 (recommended).
Captura de pantalla del resultado de Generador de HMAC mostrando la salida generada «=== HMAC GENERATOR === Algorithm: HMAC-SHA256 Me…»
El resultado final: la salida generada «=== HMAC GENERATOR === Algorithm: HMAC-SHA256 Me…». El enlace de descarga es una URL blob local: el archivo nunca sale de tu dispositivo.

Preguntas frecuentes

¿En qué caja pego el mensaje, y en cuál va la clave secreta?

Esta herramienta reutiliza el diseño de dos cajas de comparación de texto del sitio, así que las etiquetas son genéricas. Pega el mensaje (el cuerpo de la petición, el payload del webhook o la cadena que estás firmando) en la caja etiquetada "Texto original", y la clave secreta en la caja etiquetada "Texto modificado".

¿Se envía mi mensaje o mi clave secreta a un servidor?

No. El HMAC se calcula enteramente dentro de tu pestaña del navegador, SHA-256/SHA-1/SHA-512 usan la Web Crypto API nativa del navegador, y MD5 usa una pequeña implementación en JavaScript, ambas sin ningún componente de servidor. Un secreto de firma de webhook o una clave de API es una credencial real; muchas webs de "generador de hmac" envían silenciosamente ese secreto a un backend para calcular la firma, algo que esta herramienta nunca necesita hacer.

¿Por qué el resultado no muestra el texto de mi mensaje o mi clave secreta, solo sus longitudes?

Un secreto de firma suele ser una credencial real y reutilizable, no un valor de prueba de un solo uso, mostrar solo su longitud en bytes (en lugar de repetirlo entero) hace más difícil dejarlo visible por accidente en una captura de pantalla o copiarlo junto con el resultado. Ya tienes ambos valores en las cajas de entrada si necesitas comprobarlos.

¿Para qué se usa realmente HMAC?

HMAC (Código de Autenticación de Mensajes basado en Hash) prueba tanto que un mensaje no se ha manipulado COMO que lo envió alguien que conoce un secreto compartido, un simple hash por sí solo no puede hacer lo segundo. Es el mecanismo estándar detrás de la verificación de firmas de webhooks (Stripe, GitHub, Shopify y la mayoría de proveedores de webhooks firman cada payload con HMAC-SHA256 y envían la firma en una cabecera), y detrás de muchos esquemas de firma de peticiones de API (AWS Signature Version 4, por ejemplo, está construido sobre HMAC-SHA256).

¿Qué algoritmo debería elegir?

SHA-256 (el valor por defecto) es el estándar moderno y lo que usa casi todo proveedor actual de webhooks y APIs, las firmas de webhook de GitHub, Stripe y Shopify son todas HMAC-SHA256. SHA-1 y MD5 se ofrecen por compatibilidad con sistemas antiguos o heredados que los esperan específicamente; MD5 en particular está criptográficamente roto como hash simple, pero eso no significa que HMAC-MD5 en sí esté roto de la misma manera que un MD5 simple (ambos tienen propiedades de seguridad distintas) se incluye aquí puramente por interoperabilidad con un sistema que ya lo espera, no como recomendación de seguridad.

¿Cómo verifico una firma de webhook que recibí contra esto?

Pega el cuerpo de la petición exacto en bruto que recibiste (byte a byte, antes de cualquier reformateo JSON, las diferencias de espacios producirán una firma distinta) como mensaje, pega el secreto de webhook que te dio el proveedor como clave, elige el algoritmo que documenta el proveedor (casi siempre SHA-256), y compara la salida hex o Base64 de esta herramienta con la cabecera de firma que incluía la petición. La mayoría de proveedores documentan exactamente qué codificación (hex o Base64) y nombre de cabecera usan, revisa su documentación para ese detalle.

¿Se verificó realmente la implementación de HMAC-MD5, o podría estar sutilmente equivocada?

Se verificó contra valores de referencia reales generados de forma independiente, no simplemente confiada tras derivarla a mano. Como la Web Crypto API no soporta MD5 en absoluto, HMAC-MD5 aquí es una implementación escrita a mano de la construcción HMAC estándar, comprobada directamente contra la propia implementación separada de Node.js `crypto.createHmac('md5', ...)` para 6 casos distintos (una clave corta, una clave más larga que el tamaño de bloque interno de MD5, una clave y mensaje UTF-8 de varios bytes, la clave de referencia clásica de RFC 2104, una clave vacía, y un mensaje vacío), y todos coincidieron exactamente. Esas comprobaciones están fijadas en la batería de pruebas automatizadas de esta herramienta.

Herramientas relacionadas