不发送数据

HMAC 生成器 (在浏览器中计算 HMAC-SHA256)

一款可直接在此处生成 HMAC SHA256 的 HMAC 计算工具。密钥和输入既不发送也不存储。

支持文本/Hex/Base64 输入和 Hex/Base64 输出。使用浏览器标准 Crypto API 进行安全计算。

本地计算 无存储 支持 Hex/Base64

输入和输出

本页面完全在浏览器内执行计算,不发送数据。

不发送数据
输入格式

* API 规范中的“字节序列”很重要。如果密钥是二进制的,请输入 Hex/Base64。

输入格式
输出长度: 32 字节 (SHA-256)
选项

如果换行符因操作系统或复制粘贴而不同,结果也会改变。

由于 API 签名假设“完全匹配”,通常建议保持原样。

用法

创建 HMAC 签名的基本 3 个步骤。

  1. 1 输入密钥 (如果 API 规范是二进制,请选择 Hex / Base64)
  2. 2 输入消息 (待签名字符串 / payload)
  3. 3 选择输出格式 (Hex / Base64) 并复制

HMAC 是基于“字节序列”而不是“字符串”计算的。即使看起来一样,如果字符编码、换行符或多余的空格不同(假设 UTF-8),结果也会不同。

示例 (用于验证的测试向量)

点击“加载示例”以填充输入字段。

示例 1
密钥 (文本/UTF-8)
secret
消息 (文本/UTF-8)
message
HMAC-SHA256 (Hex)
8b5f48702995c1598c573db1e21866a9b825d4a794d169d7060a03605796360b
HMAC-SHA256 (Base64)
i19IcCmVwVmMVz2x4hhmqbgl1KeU0WnXBgoDYFeWNgs=
示例 2
密钥 (文本/UTF-8)
key
消息 (文本/UTF-8)
The quick brown fox jumps over the lazy dog
HMAC-SHA256 (Hex)
f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
HMAC-SHA256 (Base64)
97yD9DBThCSxMpjmqm+xQ+9NWaFJRhdZl0edvC0aPNg=

常见陷阱

换行符差异 (LF/CRLF)

如果换行处理方式不同,结果会改变。

修剪 (去除空格)

由于签名假设完全匹配,去除空格可能会导致不匹配。

Base64URL 符号

Base64URL 通常使用 +→-,/→_,并省略 =。请检查规范。

密钥处理 (文本 vs 二进制)

示例:输入 'deadbeef' 作为'字符串' vs 作为 '字节序列 0xDE 0xAD...' 输入。

补充信息

什么是 HMAC?

一种使用密钥和消息创建签名的机制。第三方如果没有相同的密钥,无法创建相同的结果。

与 SHA-256 的区别

SHA-256 是'哈希',HMAC 是'带密钥的哈希 (签名)'。

使用案例

用于 API 签名、Webhook 验证、请求篡改检测等。

常见问题 (FAQ)

密钥会被存储吗?

不会存储。本工具在浏览器内计算,不会将密钥或消息发送到服务器。(※作为预防措施,在共享 PC 上输入后请重置)

Base64 还是 Hex?

两者都在使用。您可以选择输出格式 (Hex / Base64 / Base64URL)。请根据 API 规范进行选择。

字符编码?

假设为 UTF-8。文本输入将作为 UTF-8 转换为字节进行计算。处理二进制请使用 Hex / Base64 输入。

HMAC 和 SHA-256 哈希的区别?

SHA-256 是'哈希',HMAC 是'带密钥的哈希 (签名)'。除非密钥匹配,否则无法生成相同的结果。

输出不匹配

常见原因是 (1) 密钥处理 (文本 vs 二进制),(2) 换行符,(3) 空格,(4) Base64URL。请按顺序检查上面的陷阱。