🔐 HMAC-SHA256 在线计算器

消息认证码 · 自定义密钥 · 64 位十六进制输出 · 浏览器本地计算

HMAC-SHA256(Hash-based Message Authentication Code)是一种基于 SHA-256 哈希算法的密钥消息认证码。输入任意 UTF-8 文本与密钥,即可在浏览器本地生成 64 位十六进制认证码,常用于 API 接口签名、Webhook 校验、JWT 签名验证与数据完整性检查。

🔐 输入消息与密钥
🔒 本地计算

支持中文、英文、数字与符号,按 UTF-8 编码参与计算。

正式环境请使用足够随机的高强度密钥,并妥善保管。

输入消息与密钥后点击计算 UTF-8
🔒 计算结果
64 位十六进制
HMAC-SHA256
—
输出为 64 位小写十六进制字符串
已复制到剪贴板
等待计算... HMAC-SHA256
ℹ️ HMAC-SHA256 知识参考

什么是 HMAC-SHA256?

HMAC-SHA256 是基于 SHA-256 哈希算法的密钥消息认证码(Hash-based Message Authentication Code)。它把密钥与消息一起参与哈希运算,生成 256 位、也就是 64 个十六进制字符的认证码。与普通 SHA-256 摘要不同,HMAC-SHA256 必须持有相同密钥才能生成或验证结果,因此常用于接口签名、Webhook 校验、JWT 签名验证以及数据完整性保护。

HMAC-SHA256 与 SHA-256 的区别

  • SHA-256:对消息本身计算摘要,不包含密钥,任何人都能重新计算。
  • HMAC-SHA256:把密钥和消息一起参与运算,具备消息认证能力,可防止未授权篡改与伪造。
  • 输出长度:两者都输出 256 位,即 64 个十六进制字符。
  • 适用场景:只需要校验数据是否变化时可用 SHA-256;需要验证消息来源和完整性时优先使用 HMAC-SHA256。

常见使用场景

  • API 接口签名:将请求参数与密钥按约定规则生成 HMAC-SHA256 签名,服务端使用相同密钥验签。
  • Webhook 校验:校验回调请求是否来自可信发送方,并确认消息内容未被篡改。
  • JWT 签名验证:HS256 算法即使用 HMAC-SHA256 对 JWT 头部和载荷进行签名。
  • 数据完整性校验:在文件传输、配置分发等场景中比对认证码,及时发现内容变化。

如何使用本工具

  1. 在“消息”输入框中粘贴需要签名的文本,支持中文、英文、数字和符号,按 UTF-8 编码。
  2. 在“密钥”输入框中输入双方约定的密钥;留空时使用默认密钥 default-key。
  3. 点击“计算 HMACSHA256”,右侧会输出 64 位小写十六进制认证码。
  4. 点击“复制结果”即可将 HMAC-SHA256 值复制到剪贴板。

HMAC-SHA256 计算示例

例如消息为 hello、密钥为 secret 时,HMAC-SHA256 结果为:

88aab3ede8d3adf94d26ab90d3bafd4a2083070c3bcce9c014ee04a443847c0b

你可以把上述消息与密钥填入工具,验证输出结果是否一致。

安全使用建议

  • 正式环境请使用足够随机、长度足够的高强度密钥,不要使用弱口令或公开示例密钥。
  • HMAC 密钥应保存在服务端安全环境中,避免在前端代码或公开仓库中泄露。
  • 比对认证码时建议使用恒定时间比较,降低时序攻击风险。
  • 本工具在浏览器本地完成计算,消息与密钥不会上传服务器;但仍建议不要在不受信任的公共电脑上处理生产密钥。

常见问题

HMAC-SHA256 的输出长度是多少?

输出为 256 位,即 64 个十六进制字符。本工具默认输出小写十六进制字符串。

密钥可以留空吗?

可以,留空时本工具使用 default-key 作为默认密钥。正式用于接口签名或安全校验时,请始终使用自定义高强度密钥。

计算过程会上传消息或密钥吗?

不会。本工具使用本地加载的 CryptoJS 库在浏览器中完成计算,消息和密钥不会发送到服务器。

HMAC-SHA256 和 SHA-256 应该选哪个?

如果只需要校验数据是否改变且不需要密钥,可使用 SHA-256;如果需要验证消息来源和完整性,防止未授权方伪造,应使用 HMAC-SHA256。

相关工具