HMAC 计算器

用密钥实时计算消息的 HMAC-SHA256 或 HMAC-SHA512,边输入边更新。十六进制输出、UTF-8 输入,支持空消息。

输入内容和文件始终留在浏览器中

密钥和消息

粘贴要签名的消息(例如 webhook 请求体),或加载示例。

输入密钥——HMAC 会随输入实时计算。

本页内容

HMAC 计算器在你输入时用 SHA-256 或 SHA-512 计算带密钥的消息认证码(RFC 2104)。可用于校验 Webhook 签名或复现 API 请求签名;密钥和消息都留在浏览器中。

详细功能

填写 密钥 和 消息,两者都按输入原样作为 UTF-8 文本处理。每次按键或切换算法都会重新计算,结果以小写十六进制显示:HMAC-SHA256 为 64 个字符,HMAC-SHA512 为 128 个字符。计算由页面内的 Rust/WebAssembly 模块完成。

空消息是合法输入:密钥为 key 时,空消息的 HMAC-SHA256 为 5d5d139563c95b5967b9bd9a8c9b233a9dedb45072794cd232dc1b74832607d0,与 OpenSSL 等库一致。没有密钥时输出保持为空。长于哈希分组的密钥(SHA-256 为 64 字节,SHA-512 为 128 字节)会按标准先做哈希。

密钥字段只接受文本,因此服务以 hex 或 Base64 形式提供的密钥,应按该服务实际用作密钥的形式填写。结果已用 RFC 4231 测试向量核对。不保存任何内容:刷新页面后两个字段都会清空。

实用示例

经典测试向量:密钥 key,消息 The quick brown fox jumps over the lazy dog,SHA-256 → f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8。

RFC 4231 测试用例 2:密钥 Jefe,消息 what do ya want for nothing?,SHA-256 → 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843。

空消息:密钥 key 加空消息得到 5d5d139563c95b5967b9bd9a8c9b233a9dedb45072794cd232dc1b74832607d0,与 printf '' | openssl dgst -sha256 -hmac key 相同。

校验 Webhook:把原始请求体粘贴为消息、Webhook 密钥作为密钥;如果服务商发送的是 sha256=<hex>,只拿 hex 部分与结果比较。

如何使用此工具

  1. 输入密钥

    在 密钥 中输入或粘贴共享密钥。

  2. 输入消息

    在 消息 中粘贴被签名的原始字节,或留空以计算空字符串的 HMAC。

  3. 选择算法

    在 算法 中选择 SHA-256 或 SHA-512,HMAC 结果 会立即更新(也可点击 计算 HMAC)。

  4. 复制或清除

    复制 取出十六进制值,清除 清空两个字段。

提示和最佳实践

  • 必须对服务器签名时的原始字节计算:重新格式化的 JSON、不同的键顺序或末尾多出的换行都会改变 HMAC。
  • 在自己的代码中应使用恒定时间比较 HMAC;这里的目视比对只用于调试。
  • 末尾带空格或换行的密钥就是另一个密钥;结果不一致时请检查该字段。
  • 一般场景下 HMAC-SHA512 并不是"安全两倍",请选择对方要求的算法。
  • 如果期望值是 Base64,它与十六进制输出编码的是同样的字节:比较前先相互转换。