# 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.

## 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.

¿Su anuncio aquí?

[Envíenos un correo](mailto:hi@dennn.is?subject=Publicidad%20en%20OneClick%20Pro)

[Anuncio El conjunto de plugins listo para agentes de WordPress.](https://sleekwp.com/?ref=oneclickpro)
