HMAC 签名
API 认证常用消息签名,支持 SHA-1 / SHA-256 / SHA-384 / SHA-512
什么是 HMAC 签名?
HMAC(Hash-based Message Authentication Code,基于哈希的消息认证码)是一种利用密码学哈希函数来验证消息完整性和真实性的算法。它通过将密钥(Secret)与消息(Message)结合,再经过哈希运算生成一段固定长度的签名串,常用于 API 请求认证、Webhook 签名校验、数据防篡改等安全场景。
HMAC 的核心原理是:在标准的哈希函数(如 SHA-256)基础上,引入密钥进行两次哈希运算——先对密钥做一次内部填充(ipad)哈希,再做一次外部填充(opad)哈希。这种双层结构确保了即使哈希函数本身存在某些弱点,攻击者也无法在没有密钥的情况下伪造合法的 HMAC 签名。IqsBot HMAC 签名工具支持 SHA-1、SHA-256、SHA-384、SHA-512 四种主流算法。
为什么需要 HMAC 签名工具?
在前后端分离架构和开放平台开发中,HMAC 签名是保障接口安全的常用手段:
- API 请求签名:调用第三方开放 API 时,通常需要在请求头中附带
X-Signature或Authorization字段,使用 HMAC 对请求参数签名以证明请求者的身份 - Webhook 校验:接收 GitHub、微信支付等平台的 Webhook 回调时,通过验证请求体的 HMAC 签名确认消息确实来自可信来源
- 数据完整性校验:在不可信的网络通道中传输敏感数据时,附上 HMAC 签名可以确保数据未被中间人篡改
- Token 生成:为临时访问令牌或 API Key 生成不可伪造的签名凭证
- 调试与联调:开发阶段需要快速验证签名逻辑是否正确,对比服务端计算结果
使用 IqsBot HMAC 签名工具,你可以快速在浏览器端完成 HMAC 签名的生成与验证,无需编写脚本或安装命令行工具。
相比其他在线 HMAC 工具,IqsBot 的核心优势是纯浏览器端运行——你的密钥和消息内容不会上传到任何服务器,完全在本地处理。对于包含 API Secret、私密业务数据的场景,这一点尤其重要。同时支持 Hex 小写、Hex 大写、Base64 三种输出格式,满足不同平台的对接要求。
如何使用 IqsBot HMAC 签名工具
基础用法
- 选择哈希算法:在下拉菜单中选择所需的算法(SHA-1 / SHA-256 / SHA-384 / SHA-512),安全性越高推荐 SHA-256 或以上
- 输入密钥:在 Secret 输入框中填入你的 API 密钥或共享密钥
- 输入待签名的消息:在 Message 文本框中粘贴需要签名的请求体或字符串
- 点击「生成签名」:工具会自动计算并显示 HMAC 签名结果
高级功能
- 多算法支持:支持 SHA-1(兼容旧系统)、SHA-256(推荐通用)、SHA-384 和 SHA-512(高安全需求)四种哈希算法
- 多种输出格式:结果可输出为 Hex 小写(最常用)、Hex 大写(部分平台要求)、Base64 三种格式
- 一键复制:快速复制生成的签名字符串到剪贴板
- Unicode 安全:支持中文等 Unicode 字符的消息输入,自动按 UTF-8 编码处理
- 即时反馈:签名计算完成后立即显示结果,错误时有明确提示信息
使用示例
示例1:API 请求签名
假设你正在对接某开放平台,需要用 SHA-256 算法对请求体做 HMAC 签名:
- 密钥(Secret):
my_secret_key_2024 - 消息(Message):
{"timestamp":1716800000,"user_id":"u10086","action":"query"} - 算法:SHA-256
- 输出格式:Hex 小写
点击「生成签名」后即可获得签名串,将其放入请求头 X-Signature 中发送给服务端。
示例2:Webhook 签名校验
收到微信支付的回调通知时,你需要验证其签名是否匹配:
- 密钥:商户平台配置的 APIv3 密钥
- 消息:回调通知的原始 JSON 正文
- 算法:根据平台文档选择(通常为 SHA-256)
将本地计算出的签名与回调头中的签名比对,一致则说明通知可信。
常见问题
Q: HMAC 和普通哈希(如 SHA-256)有什么区别?
A: 普通 SHA-256 只是对数据做单向哈希,任何人都可以对相同数据算出相同的哈希值。HMAC 在此基础上引入了密钥——只有持有相同密钥的双方才能生成和验证一致的签名。简单来说,普通哈希用于校验数据是否被篡改,HMAC 用于同时验证数据完整性和发送者身份。
Q: 应该选择哪种哈希算法?
A: 推荐优先使用 SHA-256,它在安全性和性能之间取得了良好平衡。如果对接的 legacy 系统只支持 SHA-1,可以使用 SHA-1 但需注意其已不推荐用于新的安全场景。SHA-384/SHA-512 提供更强的抗碰撞能力,适用于对安全性有极高要求的金融或政务场景。
Q: 我的密钥会被上传到服务器吗?
A: 绝对不会。IqsBot 的所有工具都运行在浏览器本地,HMAC 计算使用 Web Crypto API(SubtleCrypto),密钥和消息全程不会离开你的设备。即使断网状态下,本工具依然可以正常使用。
Q: 支持哪些输出格式?不同格式分别用在什么场景?
A: 支持 Hex 小写(如 a1b2c3...,最常见)、Hex 大写(如 A1B2C3...,部分 Java 平台默认大写)、Base64(如 qbsw...,某些 REST API 要求)。具体使用哪种格式取决于你对接的平台规范。
Q: 可以对文件内容做 HMAC 签名吗?
A: 当前版本主要针对文本消息进行签名。如果你需要对文件签名,可以将文件内容转换为文本形式(如 Base64 编码后的字符串)后再进行 HMAC 计算。