分类: 开发工具

HMAC 生成器

站方自主规划没找到想要的工具?

用共享密钥给消息签名

输入消息和密钥,一次得到 SHA-1、SHA-256、SHA-384、SHA-512 的 HMAC,可选十六进制或 Base64 输出。密钥不会离开你的浏览器。

HMAC-SHA1
结果将显示在这里。
HMAC-SHA256
结果将显示在这里。
HMAC-SHA384
结果将显示在这里。
HMAC-SHA512
结果将显示在这里。

密钥和消息都留在本页面。不上传、不保存、不记录。

本页的所有处理都在浏览器中完成,不会上传任何内容。

这个工具能做什么

HMAC 用来证明消息出自持有共享密钥的一方,并且中途没被改动:Webhook 服务商用它给回调体签名,API 网关要求每次请求都带上它,签名 URL 通常也是对路径和过期时间做的 HMAC。出问题的几乎从来不是算法,而是密钥:以十六进制印出来的密钥是一串字节,而不是 a 到 f 这些字符,当成文本读就会签出完全不同的结果。这里可以先声明密钥是什么,四种摘要都通过浏览器的 Web Crypto API 计算,结果按十六进制或 Base64 呈现,直接粘进服务商文档指定的字段即可。

使用方法

  1. 选择密钥是纯文本、十六进制还是 Base64。
  2. 填入密钥和需要签名的原始消息体。
  3. 复制服务商要求的那种摘要的签名。

隐私说明

本工具完全在你的浏览器中运行。输入的内容不会被上传、保存或分享,关闭标签页即随之消失。

常见问题

我的密钥会被发送出去吗?
不会。密钥只由本页面内浏览器自带的 Web Crypto 实现使用,不上传、不保存、不记录,关掉标签页就没了。
为什么我算出的签名和服务商给的不一样?
几乎都是消息或密钥差了一个字节。请按请求发送时的原始请求体逐字节签名(含空白),并确认密钥是十六进制字节而不是文本。
现在还能用 HMAC-SHA1 吗?
只在需要对接强制使用它的老服务时。HMAC-SHA1 并没有像纯 SHA-1 那样被攻破,但新项目选 SHA-256 更稳妥。