🏷️
HMAC 消息认证码
HMAC-SHA1/224/256/384/512 与 HMAC-MD5 计算,支持全算法对比、常量时间验签与 Base64URL 输出
🔑 HMAC 密钥属于生产凭证。 本工具为纯前端、密钥不会离开你的浏览器,但仍建议:① 优先使用测试环境密钥;② 用完点「清除密钥」; ③ 不要把含真实 AppSecret 的分享链接发给他人。
当前把输入框里的字符串按 UTF-8 直接当字节使用。若你的密钥形如 ab12cd34…(十六进制文本),请把「密钥编码」改为 Hex—— 本工具不自动猜测,因为猜错会得到一个格式完全正确、但值错误的签名。
密钥 K
密钥长度 0 字节(以 UTF-8 计)
消息 M(待签名内容)
0 字符
提示:不一致时先检查——报文末尾是否多了换行、参数顺序是否与文档一致、密钥是否需要先按 Hex/Base64 解码。
- HMAC(RFC 2104)证明两件事:内容未被篡改,且生成方持有密钥。它不提供机密性——消息本身仍是明文。
- 密钥处理规则:默认把输入框里的字符串按 UTF-8 直接当字节使用。如果你的密钥"长得像十六进制"(例如 ab12cd34…),必须把「密钥编码」改成 Hex,否则会把这串字符本身当密钥。**本工具不自动猜测**,因为猜错会得到完全正确格式的错误签名。
- RFC 2104 的密钥处理:长度超过分组时先对密钥做一次哈希再补零,不超过时直接补零到分组长度,然后分别用 0x36 / 0x5c 做内外填充。这一步由实现保证,并有 RFC 2202 / RFC 4231 向量回归。
- 验签采用常量时间比较(逐字节异或累加、不提前返回),避免通过响应耗时逐字节爆破签名。
- Base64URL 输出去掉 padding 并把 +/ 换成 -_,这是 Stripe / GitHub / 微信支付等 Webhook 签名的通用编码。
- 🔑 密钥属于生产凭证。本工具是纯前端、密钥不会离开你的浏览器,但仍建议优先使用测试环境密钥,用完点「清除密钥」。
使用说明 / 算法说明
- HMAC(RFC 2104)证明两件事:内容未被篡改,且生成方持有密钥。它不提供机密性——消息本身仍是明文。
- 密钥处理规则:默认把输入框里的字符串按 UTF-8 直接当字节使用。如果你的密钥"长得像十六进制"(例如 ab12cd34…),必须把「密钥编码」改成 Hex,否则会把这串字符本身当密钥。**本工具不自动猜测**,因为猜错会得到完全正确格式的错误签名。
- RFC 2104 的密钥处理:长度超过分组时先对密钥做一次哈希再补零,不超过时直接补零到分组长度,然后分别用 0x36 / 0x5c 做内外填充。这一步由实现保证,并有 RFC 2202 / RFC 4231 向量回归。
- 验签采用常量时间比较(逐字节异或累加、不提前返回),避免通过响应耗时逐字节爆破签名。
- Base64URL 输出去掉 padding 并把 +/ 换成 -_,这是 Stripe / GitHub / 微信支付等 Webhook 签名的通用编码。
- 🔑 密钥属于生产凭证。本工具是纯前端、密钥不会离开你的浏览器,但仍建议优先使用测试环境密钥,用完点「清除密钥」。