🔐

HMAC签名生成器

在浏览器本地生成 HMAC 消息签名,支持 SHA-1/256/384/512,输出 Hex 或 Base64。

HMAC签名生成器
准备就绪

HMAC签名生成器使用指南

📌 简介

HMAC签名生成器是一款面向开发者的在线加密工具,用于生成 HMAC(Hash-based Message Authentication Code,基于哈希的消息认证码)签名。HMAC 结合了哈希算法和密钥,既能验证消息完整性,又能验证消息来源,广泛用于 API 签名、Webhook 校验、JWT 签名等场景。本工具基于浏览器原生 Web Crypto API,签名计算完全在本地完成,密钥和消息不会上传到任何服务器。

📖 HMAC 的原理与安全边界

HMAC 的算法可以简单表示为 HMAC(K, M) = H((K' ⊕ opad) || H((K' ⊕ ipad) || M)),其中 K 是密钥,M 是消息,H 是哈希函数,K' 是密钥经过填充或哈希处理后的结果,ipad 和 opad 是两个固定常量。相比直接用 H(K + M),HMAC 能抵御长度扩展攻击,安全性更高。常见算法包括 HMAC-SHA1、HMAC-SHA256、HMAC-SHA384、HMAC-SHA512,其中 SHA-1 已被认为不安全,新项目应优先使用 SHA-256 及以上。需要强调的是,HMAC 只能保证消息完整性和来源认证,不能提供加密功能,敏感数据仍需配合 AES 等对称加密使用。

💼 常见应用场景

⚙️ 使用步骤

  1. 选择哈希算法(推荐 HMAC-SHA256)和输出格式(Hex 小写、Hex 大写或 Base64)。
  2. 在“密钥”输入框中填写共享密钥,在“消息内容”中填写需要签名的原始字符串。
  3. 点击“生成签名”按钮,下方输出框显示签名结果。
  4. 点击“复制签名”把结果复制到剪贴板,用于与后端结果对比或填入请求头。

⚠️ 注意事项

❓ 常见问题 (FAQ)

Q: 为什么我的签名结果和后端不一致?

A: 常见原因有:密钥或消息的编码不同(如 UTF-8 与 GBK)、消息末尾多了换行、算法或输出格式选错、服务端对消息做了额外处理(如排序、拼接)。建议逐项对比。

Q: Hex 和 Base64 应该选哪个?

A: 取决于对接方的要求。Hex 更易读、便于日志排查,Base64 更短、适合放在 URL 或 HTTP 头中。与后端保持一致即可。

Q: 密钥会上传到服务器吗?

A: 不会。签名完全由浏览器 Web Crypto API 在本地计算,密钥和消息不会离开你的设备。