Cómo usar: Generador HMAC
- Pega el mensaje exactamente como se firma: en webhooks, el cuerpo bruto de la petición.
- Introduce la clave secreta y elige su codificación.
- Elige el algoritmo de hash; el HMAC se actualiza al instante.
- Pega una firma recibida en Firma esperada para verificarla.
¿Qué es HMAC?
HMAC (Hash-based Message Authentication Code, RFC 2104) combina una clave secreta con una función hash para producir una firma. Cualquiera que tenga la clave puede calcular el mismo valor; quien no la tenga no puede falsificarlo. Las APIs usan HMAC para firmar peticiones (AWS Signature v4, muchas pasarelas de pago) y los webhooks lo usan para que puedas demostrar que una llamada realmente vino del emisor.
Verificar webhooks
| Servicio | Cabecera | Algoritmo / codificación |
|---|---|---|
| GitHub | X-Hub-Signature-256 | HMAC-SHA256, hex, con prefijo sha256= |
| Stripe | Stripe-Signature | HMAC-SHA256 en hex de timestamp.body |
| Shopify | X-Shopify-Hmac-Sha256 | HMAC-SHA256, Base64 |
| Slack | X-Slack-Signature | HMAC-SHA256 en hex de v0:timestamp:body |
El motivo más habitual por el que una firma no coincide es que el cuerpo cambió antes de firmarlo: JSON parseado y vuelto a serializar, otros espacios o finales de línea distintos. Firma siempre los bytes brutos que recibiste. El verificador de arriba acepta hex (con o sin sha256=), Base64 y Base64url.
HMAC frente a hashes simples
Un hash SHA-256 simple demuestra integridad, pero no autenticidad: cualquiera puede recalcularlo tras modificar el mensaje. HMAC incluye el secreto, así que solo quienes tienen la clave pueden generar un valor válido. Usa una clave con al menos tantos bytes aleatorios como la salida del hash (32 para SHA-256). En código de servidor, compara las firmas con una función de tiempo constante como crypto.timingSafeEqual.
Para hashes sin clave, usa el generador de hash; para tokens firmados, el codificador JWT.
También se busca como: hmac sha256, hmac online, hmac sha256 online, firma webhook, hmac sha512, verificar hmac.
Herramientas que combinan con: Generador HMAC
- Decodificador JWT — Pega un token web JSON para examinar su encabezado y su carga útil, comprobar cuándo caduca y verificar su firma.
- Codificación y descodificación Base64 — Convierte texto a Base64 y viceversa con compatibilidad total con UTF-8 (acentos, emojis), cambia a Base64 compatible con URL o arrastra un archivo para obtener su cadena Base64 o su URI de datos.
- Cifrar y descifrar AES — Protege una nota, un secreto o un valor de configuración con una contraseña usando AES-256, o descifra texto generado con openssl enc.
- Validador de IBAN — Comprueba si un IBAN es válido antes de enviar dinero o guardarlo: el país, la longitud que corresponde a ese país, el formato de la cuenta y el checksum mod-97.
Preguntas frecuentes
¿Por qué mi HMAC no coincide con la firma del webhook?
sha256=.