Desarrollo local

Verificador local de firmas webhook

Reconstruye la cadena firmada, calcula el HMAC y explica por qué una firma coincide o falla. Todo el cálculo ocurre en este navegador.

Sin cargas, cookies, almacenamiento, analítica ni anuncios en esta página.

Método técnico

De texto visible a cadena firmada

La firma depende de una secuencia de bytes, no del significado del JSON. Esta página convierte el texto ingresado a UTF-8, construye la cadena del preset y expone sus offsets antes de calcular HMAC-SHA256.

Cadena canónica

GitHub firma directamente el payload UTF-8. Stripe antepone el timestamp decimal y un punto: t.payload. El modo genérico firma solo el texto ingresado. El mapa hexadecimal hace visibles BOM, bytes multibyte, tabs, espacios finales y combinaciones LF, CRLF o CR.

Lectura de un fallo

Un HMAC distinto no revela qué byte del payload cambió. El laboratorio prueba localmente hipótesis acotadas — saltos de línea, BOM, espacio exterior, salto final y serialización JSON compacta — y solo informa una causa cuando esa variante reproduce exactamente la firma recibida.

Reloj y replay

En Stripe, una firma criptográfica puede coincidir y aun así quedar fuera de tolerancia. La distancia de reloj se evalúa por separado. Esta comprobación local no recuerda eventos vistos ni impide que una solicitud firmada sea reenviada.

Límite del navegador

El textarea representa una cadena JavaScript convertida a UTF-8 y normaliza saltos pegados a LF según el DOM. El laboratorio puede contrastar firmas producidas con CRLF o CR, pero la vista no sustituye la captura de bytes crudos de un servidor ni representa archivos binarios arbitrarios. Una coincidencia tampoco autentica la conexión de red.

Matriz de diagnóstico
ObservaciónInterpretación acotadaComprobación siguiente
Digest correcto, reloj fueraEl secreto y la cadena coinciden; la marca temporal excede la tolerancia.Sincronizar relojes y revisar la política de replay.
Coincide solo con LF o CRLFLa entrega y la copia usan terminadores de línea distintos.Capturar el cuerpo antes del parser o middleware.
Coincide solo sin BOMUna representación añadió U+FEFF al inicio.Comparar los primeros bytes recibidos.
Coincide solo con JSON compactoAlguna capa probablemente parseó y serializó el cuerpo.Verificar la solicitud cruda antes de interpretar JSON.
Ninguna hipótesis coincideNo hay evidencia para atribuir la causa a una transformación probada.Revisar secreto, cabecera, algoritmo y captura byte a byte.

Diferencia comprobable

Cobertura frente a verificadores directos

La comparación del 15 de agosto de 2026 no presume exclusividad por usar Web Crypto. AquilaX, EventDock y Meshes ya verifican localmente varios proveedores. Wekaton concentra el alcance en tres modos y añade inspección de la cadena, offsets UTF-8, estructura de cabecera y reproducción exacta de transformaciones comunes.

HerramientaCobertura observadaDiferencia de esta implementación
AquilaXGitHub, Stripe, Slack, Shopify, Twilio, SendGrid y modo custom.Mapa hexadecimal con offsets; inventario de BOM, Unicode y saltos; cabecera descompuesta; comparación de bytes del digest; hipótesis locales verificadas contra la firma.
EventDockCinco proveedores, ejemplos y contenido de integración.
MeshesGenerar/verificar, SHA-256/SHA-512, hex/base64 y cinco proveedores.

Registro de mantenimiento

Presets versionados

PresetCadena y cabeceraFuenteRevisión
Genérico v1Texto UTF-8 · digest hexadecimalRFC 4231 y Web Crypto2026-08-15
GitHub v1Payload UTF-8 · X-Hub-Signature-256: sha256=<hex>GitHub Webhooks2026-08-15
Stripe v1timestamp.payload · componentes t y v1Stripe Webhooks · SDK Python 15.5.02026-08-15

Responsable editorial: Wekaton · Última revisión técnica: 15 de agosto de 2026 · Revisión requerida cuando un proveedor cambie su esquema de firma.

Fuentes del método