关于此工具
HMAC 证明一条消息来自知道共享密钥的人且未被篡改——这是签名 Webhook、API 请求签名以及许多令牌方案背后的机制。输入你的消息和密钥,选择 SHA-256、SHA-384 或 SHA-512,即可得到十六进制或 Base64 形式的签名。
计算使用浏览器原生的 Web Crypto API,完全在你的设备上进行,因此你的密钥绝不会被传输。它在你输入时实时更新。
常见问题
HMAC 有什么用途?
HMAC(基于哈希的消息认证码)既能证明消息未被篡改,也能证明它确实来自知道共享密钥的一方——Stripe、GitHub 等服务正是用它来对 Webhook 载荷签名,以便你验证其真实性。
HMAC 和单纯对消息做哈希是一回事吗?
不是。单纯的哈希(仅对消息做 SHA-256)任何人都能重新计算出来,因此无法证明来源。HMAC 会混入一个密钥,并采用能抵御长度扩展攻击的构造方式,因此只有持有密钥的人才能生成有效签名。
我的密钥会被发送到别处吗?
不会。HMAC 是通过浏览器的 Web Crypto API(crypto.subtle)在本地计算的。你的密钥和消息都不会离开你的设备。
明明复制正确,为什么签名校验还是显示"不匹配"?
Webhook 请求头通常带有 sha256=<十六进制> 这样的前缀,大小写也可能不同,或者前后有多余空白。校验工具会自动统一大小写并去掉 algorithm= 前缀,但请再确认一下你选择的哈希算法和密钥编码(UTF-8/十六进制/Base64)是否和发送方一致。
我应该选择哪种密钥编码?
大多数 API 提供的都是纯 UTF-8 密钥字符串(例如 whsec_...)——选择 UTF-8 即可。只有当服务商文档明确说明密钥采用十六进制或 Base64 编码时,才选择相应选项。