HMAC 生成器
一个用于 API 认证、Webhook 签名校验、支付回调排查和请求完整性检查的 HMAC 签名工具。支持文本和文件输入,可切换密钥格式,选择多种 HMAC 算法,并输出 Hex 或 Base64 签名。
- 支持 HMAC-MD5、HMAC-SHA1、HMAC-SHA2、HMAC-SHA3、HMAC-Keccak、HMAC-BLAKE2、HMAC-BLAKE3 和 HMAC-SM3
- 既可以签名普通消息文本,也可以对文件 payload 计算 HMAC
- 支持文本密钥、Hex 密钥和 Base64 密钥,方便按实际字节内容排查问题
- 支持 lower hex、UPPER HEX 和 Base64 输出,便于匹配不同平台的签名格式要求
功能简介
从生成签名到排查签名不一致,都可以在同一个页面完成。
- 01
多算法 HMAC
在同一界面中切换 SHA-256、SHA-512、SHA3、Keccak、BLAKE、SM3 以及兼容旧系统的算法。
- 02
支持消息和文件签名
可对普通文本、JSON payload、Webhook 原始 body、canonical string 和本地文件计算 HMAC。
- 03
文件分块计算 HMAC
大文件会在浏览器内分块处理,耗时任务也能看到计算进度。
- 04
密钥格式切换
支持文本密钥、Hex 密钥和 Base64 密钥,方便确认真正参与计算的是同一组字节,而不只是看起来相同的字符串。
- 05
灵活的输出编码
签名结果可输出为 lower hex、UPPER HEX 或 Base64,适配 API、Webhook 和对象存储等不同签名规范。
- 06
本地分块处理
文本、secret 和文件都在浏览器内计算。即使是大文件,也不需要把原始 payload 交给外部服务器。
如何使用
建议按这个顺序核对:签名内容、密钥字节、算法、输出格式,然后再和服务端结果比较。
- 01
选择输入类型。canonical string 或 request body 用文本模式,二进制 payload 用文件模式。
- 02
输入 Secret key,并在计算前确认密钥格式是文本、Hex 还是 Base64。
- 03
选择后端或第三方平台要求的 HMAC 算法,名称和变体都要一致。
- 04
选择输出格式(Hex 或 Base64),复制生成的签名,并和服务端期望值进行比较。
- 05
如果验证失败,先检查 payload 是否被规范化、字段顺序是否一致、编码和换行符是否一致,以及 timestamp 是不是按同样规则拼接。
功能说明
它不是只输出一次 digest,而是面向真实签名校验流程设计的。
- 在线生成 HMAC-SHA256、HMAC-SHA512、HMAC-SHA3、HMAC-BLAKE3 和 HMAC-SM3
- 适合 API 签名字符串、Webhook payload、支付回调校验和签名 URL 排查
- 按字节一致性处理文本、Hex、Base64 三种密钥格式
- 可输出 lower hex、UPPER HEX 和 Base64,以匹配不同平台的签名规范
- 文件 HMAC 支持分块处理、进度显示和取消操作
- 内置示例 payload,一键填入即可开始联调和排查
- 支持全屏工作区和进度反馈,适合较长 payload、签名字符串和文件校验
- 所有计算都在浏览器内完成,适合密钥隐私和内部调试场景
适合哪些场景
适合 API 安全、平台对接,以及各种签名不一致的排查。
-
API 认证调试
重新计算请求签名,排查字段顺序、编码方式和 canonicalization 不一致的问题。
-
Webhook 签名验证
对收到的 raw callback payload 重新签名,确认来源可信,并验证 payload 没有被篡改。
-
支付网关对接
根据不同支付服务商的签名规则,校验请求签名和回调签名。
-
签名 URL 和存储访问
生成或验证对象存储、CDN 访问控制中使用的 canonical string 签名。
使用建议
HMAC 校验能否通过,关键在于两边参与计算的字节是否完全一致。
- 确保算法、原始消息字节和 secret key 字节与服务端实现完全一致
- 明确签名对象到底是 raw body、排序后的 query string,还是 canonical string
- 签名前统一 UTF-8 编码和换行符规则
- 避免隐式转换,例如重新格式化 JSON、trim 字符串或自动 URL decode
- 不要把生产签名密钥暴露在前端代码、日志或截图中
- 建议在 CI 中固定签名测试向量,方便发现依赖或框架升级后的行为漂移
边界与注意事项
理解 HMAC 的边界,可以避免对它产生错误的安全预期。
- HMAC 用于带密钥的完整性校验和来源确认,不是可以解密还原内容的加密算法
- 这个工具不负责密钥生命周期、轮换策略或安全托管
- 如果服务端签名前有额外的规范化步骤,你需要先构造出完全相同的输入再计算
- Base64 有标准形式和 URL-safe 形式之分,请以目标协议的要求为准
- 大文件签名耗时取决于本机性能和浏览器可用资源
常见问题
这里整理了用法、数据处理、结果核对和实际限制方面的常见问题。
为什么我的 HMAC 和服务端结果不一致?
多数情况是 canonical string、编码方式、字段顺序、密钥解释方式或输出格式与服务端不同。
文本密钥和 Hex 密钥有什么区别?
文本密钥会按字符编码成字节;Hex 密钥表示明确的字节序列。同样看起来的字符串,实际参与 HMAC 的字节可能完全不同。
什么时候应该输出 Base64,而不是 Hex?
以目标协议要求为准。很多 Webhook 系统要求 Base64,部分 API gateway 则常用 Hex。
计算文件 HMAC 时,文件会上传吗?
不会。文件会在浏览器内分块处理,并在本地完成计算。
HMAC-SHA256 和 SHA256 是一回事吗?
不是。SHA256 是不带密钥的哈希;HMAC-SHA256 会把 secret key 和消息一起参与计算,用于验证消息真实性。
更多相关工具
不带密钥的 digest 请使用哈希生成器;token 解码和验签可以使用 JWT 检查器;需要加强凭据时可以使用密码生成器。