什么是HMAC 签名生成?
HMAC 生成工具用共享密钥对内容计算带密钥的摘要,同时输出十六进制与 Base64 两种编码,支持 SHA-1、SHA-256、SHA-384、SHA-512。常用于调试开放平台与支付接口的签名,计算在本地完成。
怎么用HMAC 签名生成?
- 1把按平台规则拼接好的待签名串粘贴到左侧。
- 2填入共享密钥。
- 3选择摘要算法(多数平台用 SHA-256)。
- 4按接口要求取十六进制或 Base64 结果。
在代码里怎么实现?
一次性操作用上面的工具,重复性工作建议固化到脚本或项目里。
Shell
Python
# 十六进制 echo -n "payload" | openssl dgst -sha256 -hmac "secret" # Base64 echo -n "payload" | openssl dgst -sha256 -hmac "secret" -binary | base64
常见错误与排查
| 现象 | 成因 | 修复 |
|---|---|---|
| 签名与服务端不一致 | 待签名串的拼接规则不一致:参数排序、是否包含空值、分隔符、是否 URL 编码。 | 严格按平台文档重现拼接过程,并打印出双方实际参与签名的字符串逐字符比对。 |
| 中文参数导致签名不一致 | 两端字符编码不同(UTF-8 与 GBK)。 | 统一按 UTF-8 编码后再计算。 |
常见问题
HMAC 和普通哈希有什么区别?+
普通哈希任何人都能计算,无法证明来源;HMAC 引入了共享密钥,只有持有密钥的一方才能生成正确的签名。因此 HMAC 既能校验内容完整性,也能证明请求来自合法调用方。
密钥会被上传吗?+
不会。密钥只作为参数传给浏览器的 Web Crypto 接口,用完即随页面内存释放,不写入 localStorage、也不发送请求。
相关工具
全部工具Base64 编码 / 解码
Base64 Encoder & Decoder
Base64 编码与解码,支持 UTF-8 与 URL-safe
文件 Base64 转换
File to Base64
文件转 Base64 与 Data URI,文件不上传
URL 编码 / 解码
URL Encoder & Decoder
URL 编码解码,区分整串与参数两种语义
HTML 实体转义 / 反转义
HTML Entity Encoder
HTML 实体转义与反转义
Hex 与文本互转
Hex to Text Converter
文本与十六进制互转,支持多种分隔风格
Unicode 转义 / 还原
Unicode Escape Converter
Unicode 转义与还原,支持三种写法