Webhook 签名验证器

验证 GitHub、Stripe、Slack、Shopify 和 Standard Webhooks 签名,并找出失败原因

输入

仅保存在内存中,绝不会被存储、记录或发送。

每行一个“名称: 值”,或一个 JSON 对象。名称不区分大小写。

必需的请求头

  • X-Hub-Signature-256缺失

文本框会把 CRLF 换行转换为 LF。若精确字节很重要,请以 Hex 或 Base64 粘贴请求体,或从文件加载。

粘贴原始 HTTP 请求

请求行、请求头、一个空行,然后是请求体。

结果

暂无可验证内容
输入签名密钥、请求头和原始请求体,或加载一个示例。

详情

输入完整后,验证步骤会显示在这里。
验证器检查什么

粘贴一次 Webhook 投递(签名密钥、请求头和精确的原始请求体),即可按提供商自身的规则重新计算签名:GitHub 的 X-Hub-Signature-256、包含请求时间戳的 Slack v0 签名、Shopify 的 Base64 HMAC、Stripe 的 t= 与 v1= 签名(密钥轮换期间任一 v1 匹配即可)、Standard Webhooks 与 Svix 的 webhook-id、webhook-timestamp 和 webhook-signature,以及可配置的通用 HMAC。签名有效性与时间戳新鲜度分开报告。

验证为何失败

签名覆盖的是精确字节。签名不匹配时,验证器会用常见错误重新计算,并指出第一个匹配的原因:末尾换行被添加或丢失、CRLF 与 LF 互相转换、JSON 被解析后重新序列化、密钥前后有空白、whsec_ 密钥未经 Base64 解码就被使用,或属于其他提供商方案。缺失的请求头、格式错误的签名以及过旧或位于未来的时间戳都会各自单独列出。

精确字节

验证始终使用原始请求体,格式化预览仅用于显示。文本框会把 CRLF 换行转换为 LF,因此当精确字节很重要时,请以 Hex 或 Base64 粘贴请求体或从文件加载。支持最大 5 MB 的请求体和 64 KB 的密钥。

隐私与限制

所有处理都在浏览器中通过 Web Crypto 完成。密钥只保存在内存中,绝不会被存储、放入 URL、记录或发送;只会记住提供商和容差。本工具不会重放请求或联系提供商,也不验证 Standard Webhooks v1a(Ed25519)等非对称签名。

CodingTool 已正式上线于

Launched on StartupBaseCodingTool.dev - Free, Fast & Easy Developer Tools in One Place | Product HuntCodingTool - Featured on Startup FameFazier badgeListed on Turbo0Featured on Twelve ToolsFeatured on Findly.toolsLaunchpadly Startup DirectoryCodingTool.dev — Featured on Smol Launch