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)等非对称签名。
