Hash / 密码学辅助

HMAC 生成器按字节生成,按完整摘要校验

消息和密钥分别选择编码;生成摘要,或直接核对预期摘要。

HMAC 生成器

消息

HMAC 摘要

消息与密钥仅在当前页面内存处理,不上传,也不写入浏览器存储。

选项

不去空白、不规范化;多行密钥请用 Hex/Base64。校验只接收无请求头前缀的完整摘要。

消息最多 1,000,000 个 UTF-16 单元及字节;密钥最多 4,096 个 UTF-16 单元且不能为空。

输入密钥后生成或校验,消息可以为空。

HMAC 生成器适合排查接口两端签名不一致的问题。先确认实际参与签名的原文和密钥编码,再检查算法,避免把格式差异当成算法错误。

默认支持 HMAC SHA256,也可切换 SHA-512 或 SHA-1。Webhook 签名通常涉及特定的待签字符串;本页执行通用 HMAC 校验,待签内容由你按服务方文档准备。

为什么使用 HMAC 生成器

看起来一样的密钥,字节未必一样

HMAC 生成器分别处理消息编码和密钥编码。文本 6162 是四个字符,Hex 6162 则还原为两个字节。直接粘贴编码后的密钥却仍选择文本,是签名不一致的常见原因。

两种密钥表示分别还原为不同长度的字节序列,再参与同一消息的签名。

区分格式错误与签名不匹配

预期摘要使用独立编码选项。你可以直接校验,无须先生成;工具会区分非法编码、错误长度,以及格式合法但内容不匹配的摘要,帮助缩小排查范围。

相同摘要显示勾号;消息改变一个字节后,摘要不同并显示叉号。

先对齐签名输入

01

保留实际签名原文

不要先美化 JSON、排序字段或删除行尾换行。空格、BOM 和 Unicode 表示差异都可能改变签名对象。

  • 需要精确保留原始字节时,使用 Hex 或 Base64 输入。
02

单独确认密钥编码

普通文本选择 UTF-8,十六进制字节选择 Hex,编码后的密钥选择标准 Base64。密钥输入框默认遮罩且为单行。

  • 单行密钥框会拒绝粘贴或拖入含换行的内容,并保留原密钥。多行密钥请先转成 Hex 或 Base64。
03

选对操作与参考格式

生成只计算摘要;校验还会按照预期摘要编码比较完整结果。修改任何输入或参数后,复制会禁用,直到重新运行。

  • 在预期摘要框中按 Ctrl/Cmd + Enter 执行校验,其他位置执行生成;计算时重复按快捷键不会重新启动。

分别控制算法与编码

三种算法,三种完整长度

SHA-256 输出 32 字节,SHA-512 输出 64 字节,SHA-1 输出 20 字节。请匹配接口要求的算法;SHA-1 保留用于兼容已有协议。

编码各自独立

消息和密钥都支持 UTF-8、Hex、标准 Base64。结果可输出 Hex 或 Base64,参考摘要不必使用同一种表示。Hex 大小写不影响字节,Base64 大小写会影响解码。

原生签名与验证

浏览器 Web Crypto 分别执行 HMAC 生成和校验。匹配只说明当前消息、密钥与摘要一致;它不会检查时间戳、识别真实发送者,也不会替接口实现防重放。

字节规则与使用边界

严格解码,不悄悄修正
不去首尾空白、不规范化 Unicode,也不重新序列化 JSON。Hex 必须成对且无前缀、空白和分隔符。Base64 不接受 URL 安全字符、空白、错误填充及非规范尾部位;可省略正确的填充。
空消息允许,空密钥拒绝
消息最多 1,000,000 个 UTF-16 单元,解码后最多 1,000,000 字节;密钥输入最多 4,096 个 UTF-16 单元,解码后不能为空。这是本页容量限制,不是 HMAC 的算法上限。
只校验完整摘要
参考值必须与所选算法的 20、32 或 64 字节长度相符。请自行提取 sha256= 等前缀后的摘要。本页不支持截断摘要、算法猜测、文件上传、远程 URL 或平台签名模板。
清空与撤销的范围
清空和加载示例先显示替换数量,应用后可撤销一次,同时恢复输入、参数和输出。撤销快照仍包含上一份密钥,下一次编辑会丢弃。本页不提供密钥生成、密码存储或含密钥的下载。

HMAC 生成器常见问题

HMAC 和单纯哈希有什么区别?

普通哈希只由消息决定,HMAC 使用共享密钥参与规定的消息认证构造。把盐直接放在消息前后再做哈希,不等于 HMAC;本工具调用原生 HMAC 算法。

密钥怎么填?

先看对接文档给的是原始文本还是编码后的字节。文本选 UTF-8;十六进制选 Hex;标准 Base64 选对应编码。单行遮罩框不能保留换行密钥,遇到这种密钥请改用字节编码。

支持哪些算法?

HMAC 生成器提供 SHA-256、SHA-512 和 SHA-1,默认 SHA-256。不同算法需要不同长度的预期摘要;本版不含 MD5、SHA-3 和 SHA-384。

Webhook 校验怎么用?

按服务方规则取得原始请求体及密钥,构造待签字符串,再提取摘要并选择它的编码。点击校验即可;时间戳拼接、请求头解析、有效期和防重放由你的接口处理。

为什么 JSON 看起来一样但 HMAC 不同?

JSON 对象含义一致不代表序列化字节相同。字段顺序、空格、换行和转义方式都会改变原文。请比较实际发送的请求体,不要把格式化后的展示文本当作签名输入。

还有疑问?

从标准示例开始

用 HMAC 生成器加载 RFC 示例并校验,然后修改一个消息字符,观察摘要不匹配的结果。

消息和密钥分别选择编码;生成摘要,或直接核对预期摘要。