在线 HMAC 生成器
在浏览器中用一条消息和一个密钥,以 SHA-256、SHA-1、SHA-384 或 SHA-512 生成 HMAC 签名。你的密钥始终留在本地。
HMAC 生成器通过 Web Crypto API 完全在你的浏览器中运行。你签名的消息和你输入的密钥绝不会离开你的设备,也不会上传到 ArrayKit。
打开哈希生成器
关于 HMAC 生成器
HMAC 生成器用一个密钥对一条消息签名,产生一个带密钥的哈希——正是你的 API 或 webhook 用来证明负载未被篡改的那种认证码。输入或粘贴消息和密钥,选择 SHA-256、SHA-1、SHA-384 或 SHA-512,即可把签名读回为 hex 和 Base64 两种形式。密钥可以是普通 UTF-8 文本,也可以是一个 hex 编码的字节串,因此它能与你服务器所期望的形式对齐。它为验证 webhook 签名、搭建带签名的请求头、测试某个 API 的 HMAC 方案,或把一个值与库的输出核对的开发者打造。一切都通过 Web Crypto API 在你的设备上计算——消息和密钥绝不离开你的浏览器。
功能特性
- 用一个密钥对任意消息签名,并即时读取 HMAC
- 在 SHA-256、SHA-1、SHA-384 和 SHA-512 哈希函数之间切换
- 并排查看签名的小写 hex 和标准 Base64
- 把密钥输入为 UTF-8 文本或 hex 编码的字节串
- 逐字节匹配服务端和库的 HMAC 输出
- 一键复制 hex 或 Base64 签名
- 当 hex 密钥长度为奇数或含非 hex 字符时给出清晰错误
- 通过 Web Crypto API 在你的设备上运行,不上传任何内容
如何使用 HMAC 生成器
- 选择你的服务使用的哈希算法(SHA-256 最常见)
- 输入或粘贴你想认证的消息
- 输入密钥并选择 UTF-8 或 Hex 以匹配它的格式
- 把 HMAC 读为 hex 或 Base64,并复制你需要的值
示例
输入
message: The quick brown fox jumps over the lazy dog
key: key (UTF-8)
algorithm: SHA-256
输出
hex: f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
base64: 97yD9DBThCSxMpjmqm+xQ+9NWaFJRhdZl0edvC0aPNg=
以 "key" 为密钥、对经典的 fox 句子求得的 HMAC-SHA256。
常见错误与故障排除
- 签名与我服务器产生的不一致。 — 确认你选择了相同的哈希(SHA-256 还是 SHA-1)和相同的密钥格式。像 a0b1c2 这样的密钥,作为原始 UTF-8 文本与作为 hex 字节是不同的——切换 Hex 开关以匹配服务器读取它的方式。
- 错误:Hex 密钥必须有偶数个数字。 — 在 Hex 密钥模式下,每个字节是两个 hex 字符,因此密钥长度必须为偶数。移除多余的字符或补上缺失的数字,或者如果密钥其实是文本,就切换到 UTF-8 模式。
- API 要求 Base64 形式的签名,但我只有 hex。 — 你无需转换任何东西——本工具会把同一个签名同时显示为 hex 和 Base64。直接从第二行复制 Base64 值即可。
- 末尾的换行或空格改变了结果。 — HMAC 覆盖消息的每一个字节,因此末尾的换行或空格会产生不同的码。请对你服务实际发送的确切字节签名,不要添加空白。
常见问题
- 这个 HMAC 生成器计算什么?
- 它计算一个带密钥的哈希消息认证码:它在一个哈希函数(SHA-256、SHA-1、SHA-384 或 SHA-512)下把你的消息与一个密钥结合,并把得到的签名以 hex 和 Base64 返回。任何拥有相同密钥的人都能重新计算它以验证消息。
- 我该把密钥输入为 UTF-8 还是 hex?
- 匹配你的服务存储密钥的方式。如果密钥是普通字符串或口令,用 UTF-8。如果它是一串 hex 字节(随机生成的密钥常见如此),切换到 Hex,以便使用完全相同的字节——两者会产生不同的签名。
- 我该选哪种 HMAC 算法?
- HMAC-SHA256 是大多数 API 和 webhook 的默认选择。若要更长的签名,选择 SHA-384 或 SHA-512;只有当你必须匹配一个较旧的系统时才选 SHA-1,因为 SHA-1 在新设计中被认为较弱。
- 我如何用它来验证一个 webhook 签名?
- 把原始 webhook 负载作为消息粘贴进来,把共享的签名密钥作为密钥输入,选择提供方所记载的算法,并把 hex 或 Base64 输出与他们发送的签名请求头比对。匹配即确认负载真实且未被修改。
- 我的消息或密钥会被上传到任何地方吗?
- 不会。HMAC 通过 Web Crypto API 在你的浏览器中计算。你签名的消息和你输入的密钥绝不会离开你的设备,也不会发送到 ArrayKit 或任何服务器。
- 为什么输出同时给出 hex 和 Base64?
- 不同的服务对相同的 HMAC 字节采用不同的编码——有些请求头用小写 hex,另一些用 Base64。本工具把同一个签名的两种编码都显示出来,因此你可以直接复制你 API 期望的那种格式,无需手动转换。
相关工具
全部 ArrayKit 工具