974dd242a6c0e525c85a002a7fff23c92d939cfacbb4a4ba5013496bdb96dcf689732289ca61efc2624d450f1e747c6ef1b59b3188cd859abe72bdb850dd47b96b2ba387f2ff321f19a63772fd3778e5fa01e294ee81889a0a7795813170219a8d84cad09ba350853656aef8adac4d2ea4435ac11fb2ac03ff58e8e5d4863c1fa02d11d602c1336dcf059e11d98a154775e91b45b42b19fad54599ca43a6eb0a8e7b5a2f关于 HMAC 生成器
HMAC 是把消息和一把密钥一起送入哈希函数得到的认证码,用来同时验证数据完整性和来源身份,广泛出现在 Webhook 验签、API 请求签名和 JWT 的 HS256 算法里。本工具调用浏览器原生的 Web Crypto API,在本地用你输入的密钥对消息计算 HMAC,支持 SHA-1/SHA-256/SHA-384/SHA-512,可选 Hex 或 Base64 输出。密钥和消息都只在你的设备内存里运算,不会发往任何服务器,复制结果即可与服务端签名逐字节比对。 建议在日常开发中收藏本工具,需要生成密钥或哈希值时即可快速打开使用。所有计算均在浏览器本地完成,敏感数据不会上传,可放心操作。
使用场景
- Webhook 验签 — 用平台给的 Secret 重算 HMAC-SHA256,和请求头里的签名比对,确认回调真伪。
- API 请求签名 — 按厂商规则拼接待签字符串后生成 HMAC,作为接口鉴权头发送。
- 调试 JWT HS256 — 手动复现 header.payload 的 HMAC,排查 JWT 签名校验失败的原因。
- 比对算法实现 — 验证后端语言(如 Java、Python)算出的 HMAC 是否与标准一致。
- 生成幂等键签名 — 对订单号等参数做 HMAC,得到可复算又防篡改的校验值。
常见问题
HMAC 和直接 SHA-256 有什么区别?
普通哈希任何人都能算,无法证明来源;HMAC 引入只有双方知道的密钥,没有密钥就算不出正确结果,因此能验证消息确实出自持密钥的一方。
密钥应该用文本还是 Hex?
取决于服务端约定。多数 Webhook 用 UTF-8 文本密钥,但有些 API 要求把密钥按 Hex/Base64 解码成原始字节再参与运算,两种方式结果不同,务必匹配对端。
该选哪种哈希算法?
SHA-256 是当前默认推荐,兼顾安全与性能;SHA-1 仅用于兼容老系统,不建议新项目使用;需要更高安全裕度时选 SHA-384/512。
比较签名时要注意什么?
生产代码里应使用恒定时间比较(constant-time compare),避免通过响应耗时差异泄露信息;本工具仅用于人工核对,复制后请用安全方式校验。
输出大小写或编码不一致正常吗?
HMAC 原始结果是字节,Hex 大小写、是否 Base64 只是表现形式。先统一编码格式再比对,不要因为大小写差异误判为签名不符。
有浏览器兼容性要求吗?
本工具兼容所有现代浏览器(Chrome、Firefox、Edge、Safari),无需安装任何插件或扩展。
可以离线使用吗?
首次加载后,部分功能在离线状态下仍可使用。页面资源加载后,核心逻辑完全在浏览器本地运行,不依赖网络。