Saltar al contenido

Generador HMAC-SHA256

Crea una firma HMAC-SHA256 a partir de un mensaje y una clave secreta. La herramienta codifica ambos como UTF-8, aplica la construcción HMAC del RFC 2104 con SHA-256 y devuelve la etiqueta de 256 bits en hexadecimal o Base64. Los desarrolladores la usan para depurar firmas de webhook de servicios como Stripe, GitHub o Slack, firmar solicitudes API y comparar los resultados con su propio código. La clave nunca se devuelve ni se registra.

Restablecer

Preguntas frecuentes

¿Qué es HMAC-SHA256?

HMAC-SHA256 es un código de autenticación de mensajes creado a partir de SHA-256 y una clave secreta, tal como se define en el RFC 2104. Solo quien tiene la clave puede calcular la etiqueta correcta para un mensaje. El resultado ocupa 32 bytes, o 64 caracteres hexadecimales.

¿Cómo verifico una firma de webhook?

Pega el cuerpo sin procesar exacto de la solicitud como mensaje y tu secreto de firma como clave; luego compara el resultado con la cabecera de firma. Muchos servicios firman una combinación de elementos, como la marca de tiempo de Stripe, un punto y el cuerpo, así que construye el mensaje tal como se indica en su documentación. Un solo byte cambiado produce una etiqueta distinta.

¿Hay algún vector de prueba conocido?

El caso de prueba 2 del RFC 4231 usa la clave Jefe y el mensaje what do ya want for nothing?; el resultado esperado es 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Esta herramienta devuelve exactamente ese valor.

¿Cómo se codifican la clave y el mensaje?

Ambos se codifican como texto UTF-8. Si tu secreto está en hexadecimal o Base64, como ocurre con algunos servicios, los bytes son distintos del texto que ves y primero debes decodificar la clave en tu propio código. Los espacios en blanco y los saltos de línea cuentan en ambos campos.

¿Se almacena mi clave secreta?

No. La clave solo se usa para calcular la etiqueta durante la solicitud. No se incluye en la respuesta, no se registra ni se almacena.

¿La clave puede estar vacía o ser muy larga?

HMAC acepta claves de cualquier longitud, incluso vacías. Las claves de más de 64 bytes se procesan primero con un hash SHA-256, tal como especifica el RFC. Para uso real, elige una clave aleatoria de al menos 32 bytes.

¿Debería elegir hexadecimal o Base64?

Usa el formato que envíe la otra parte. GitHub y Stripe usan hexadecimal, mientras que Slack antepone v0= al hexadecimal y muchos sistemas basados en AWS y JWT usan Base64. Ambos codifican los mismos 32 bytes.

¿HMAC-SHA256 es lo mismo que calcular el hash de SHA-256 de la clave y el mensaje concatenados?

No. HMAC calcula el hash del mensaje dos veces con claves internas y externas rellenadas, lo que protege frente a ataques de extensión de longitud. Concatenar la clave y el mensaje y calcular el hash una sola vez produce un resultado distinto y más débil.

¿Cómo debería comparar firmas en mi código?

Usa una función de comparación de tiempo constante, como crypto.timingSafeEqual en Node.js o hmac.compare_digest en Python. Una comparación de cadenas normal puede filtrar información temporal sobre la etiqueta esperada.

¿Qué tamaño puede tener el mensaje?

El mensaje y la clave pueden ocupar juntos hasta 5 MiB de texto. Eso cubre las cargas útiles habituales de webhooks y las solicitudes API.

Acerca de OneClick Pro

OneClick Pro es una colección gratuita de más de 150 herramientas web para las tareas cotidianas: convertir imágenes y unidades, dar formato y validar código, consultar dominios y SEO, y trabajar con texto, fechas y números. Todas las herramientas funcionan sin registro ni suscripción; los datos que introduce solo se utilizan para calcular el resultado y nunca se almacenan. Úsela como una caja de herramientas para tareas puntuales o añada a favoritos las que utiliza a diario.