保留实际签名原文
不要先美化 JSON、排序字段或删除行尾换行。空格、BOM 和 Unicode 表示差异都可能改变签名对象。
- 需要精确保留原始字节时,使用 Hex 或 Base64 输入。
Hash / 密码学辅助
消息和密钥分别选择编码;生成摘要,或直接核对预期摘要。
消息与密钥仅在当前页面内存处理,不上传,也不写入浏览器存储。
不去空白、不规范化;多行密钥请用 Hex/Base64。校验只接收无请求头前缀的完整摘要。
消息最多 1,000,000 个 UTF-16 单元及字节;密钥最多 4,096 个 UTF-16 单元且不能为空。
输入密钥后生成或校验,消息可以为空。
HMAC 生成器适合排查接口两端签名不一致的问题。先确认实际参与签名的原文和密钥编码,再检查算法,避免把格式差异当成算法错误。
默认支持 HMAC SHA256,也可切换 SHA-512 或 SHA-1。Webhook 签名通常涉及特定的待签字符串;本页执行通用 HMAC 校验,待签内容由你按服务方文档准备。
HMAC 生成器分别处理消息编码和密钥编码。文本 6162 是四个字符,Hex 6162 则还原为两个字节。直接粘贴编码后的密钥却仍选择文本,是签名不一致的常见原因。
预期摘要使用独立编码选项。你可以直接校验,无须先生成;工具会区分非法编码、错误长度,以及格式合法但内容不匹配的摘要,帮助缩小排查范围。
不要先美化 JSON、排序字段或删除行尾换行。空格、BOM 和 Unicode 表示差异都可能改变签名对象。
普通文本选择 UTF-8,十六进制字节选择 Hex,编码后的密钥选择标准 Base64。密钥输入框默认遮罩且为单行。
生成只计算摘要;校验还会按照预期摘要编码比较完整结果。修改任何输入或参数后,复制会禁用,直到重新运行。
SHA-256 输出 32 字节,SHA-512 输出 64 字节,SHA-1 输出 20 字节。请匹配接口要求的算法;SHA-1 保留用于兼容已有协议。
消息和密钥都支持 UTF-8、Hex、标准 Base64。结果可输出 Hex 或 Base64,参考摘要不必使用同一种表示。Hex 大小写不影响字节,Base64 大小写会影响解码。
浏览器 Web Crypto 分别执行 HMAC 生成和校验。匹配只说明当前消息、密钥与摘要一致;它不会检查时间戳、识别真实发送者,也不会替接口实现防重放。
普通哈希只由消息决定,HMAC 使用共享密钥参与规定的消息认证构造。把盐直接放在消息前后再做哈希,不等于 HMAC;本工具调用原生 HMAC 算法。
先看对接文档给的是原始文本还是编码后的字节。文本选 UTF-8;十六进制选 Hex;标准 Base64 选对应编码。单行遮罩框不能保留换行密钥,遇到这种密钥请改用字节编码。
HMAC 生成器提供 SHA-256、SHA-512 和 SHA-1,默认 SHA-256。不同算法需要不同长度的预期摘要;本版不含 MD5、SHA-3 和 SHA-384。
按服务方规则取得原始请求体及密钥,构造待签字符串,再提取摘要并选择它的编码。点击校验即可;时间戳拼接、请求头解析、有效期和防重放由你的接口处理。
JSON 对象含义一致不代表序列化字节相同。字段顺序、空格、换行和转义方式都会改变原文。请比较实际发送的请求体,不要把格式化后的展示文本当作签名输入。
还有疑问?