HMAC 生成器(浏览器内 HMAC-SHA256)

一个无需联网的 HMAC SHA256 生成页面,可快速计算 HMAC 并核对签名。

所有处理都在浏览器本地完成。密钥和消息绝不会传输或保存。

本地计算 不存储 Hex 与 Base64
无网络传输

使用方法(如何创建 HMAC 签名)

  1. 输入密钥。如果 API 规范提供的是二进制密钥字节,请选择 Hex 或 Base64 输入格式。
  2. 输入要签名的消息负载。
  3. 选择输出格式(Hex / Base64 / Base64URL),然后复制结果。
HMAC 作用于字节而不是视觉文本。UTF-8 编码、换行差异以及多余空格都会改变结果。

示例(测试向量)

示例 1(简短校验)

输入: Key = secret(UTF-8),Message = message(UTF-8)

HMAC-SHA256(Hex):
8b5f48702995c1598c573db1e21866a9b825d4a794d169d7060a03605796360b

HMAC-SHA256(Base64):
i19IcCmVwVmMVz2x4hhmqbgl1KeU0WnXBgoDYFeWNgs=

示例 2(常见短语)

输入: Key = key,Message = The quick brown fox jumps over the lazy dog

Hex:
f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8

Base64:
97yD9DBThCSxMpjmqm+xQ+9NWaFJRhdZl0edvC0aPNg=

常见陷阱

  • LF 与 CRLF 的换行差异会产生不同签名。
  • 去除前后空格可能导致 API 签名不匹配。
  • Base64URL 通常表示把 + 替换为 -、/ 替换为 _,并省略 = 填充。请核对你的 API 规范。
  • 如果密钥是以 Hex / Base64 字节分发的,把它当成普通文本会导致结果不一致。

常见问题

我的密钥会被存储吗?

不会。此工具只在浏览器中计算,不会把密钥或消息发送到任何服务器。

应该用 Base64 还是 Hex?

两者都很常见。你可以选择 Hex / Base64 / Base64URL 输出,以匹配你的 API 规范。

使用什么字符编码(UTF-8)?

文本输入会在计算 HMAC 前按 UTF-8 编码。对于二进制值,请使用 Hex / Base64 输入。

HMAC 和 SHA-256 哈希有什么区别?

SHA-256 是普通哈希。HMAC 会加入密钥,用于消息认证。

我的输出不一致,该检查什么?

请检查密钥解释方式(文本还是字节)、换行处理、空格裁剪以及 Base64URL 规则。

补充说明

什么是 HMAC?

HMAC 是一种带密钥的消息认证码,使用秘密密钥和哈希函数生成。

与 SHA-256 的区别

SHA-256 本身不包含密钥。HMAC-SHA256 需要共享密钥,因此常用于签名。

典型用途

API 请求签名、Webhook 校验,以及 token 完整性检查。