HMAC 签名生成

HMAC-SHA1/SHA256 签名,输出 Hex/Base64 格式

Ctrl+Enter 执行 · Ctrl+K 清空

输入

13

输出

字符数:0|行数:0

使用说明

在「密钥」字段输入密钥,在输入框输入原始消息,点击「生成签名」。适合微信、第三方 API 签名调试。

关于HMAC 签名生成

HMAC(Hash-based Message Authentication Code,基于哈希的消息认证码)是一种结合哈希函数与密钥的消息认证算法,用于验证消息的完整性与真实性。HMAC 通过将密钥混入哈希计算过程,确保只有持有密钥的双方才能生成与验证签名,广泛用于 API 鉴权、Webhook 签名校验、JWT 令牌签名、消息防篡改等场景。

在实际开发中,开发者经常需要生成与校验 HMAC 签名:调用第三方 API(如 AWS、阿里云、GitHub Webhook)时按其要求计算 HMAC 签名、调试 Webhook 接收时验证签名是否正确、实现 JWT 签名时生成 HMAC-SHA256 签名等。手动编写代码计算既繁琐又容易出错,借助专门工具可以快速完成。

本 HMAC 签名生成工具基于浏览器原生 Web Crypto API(crypto.subtle.sign)实现,支持 HMAC-SHA1、HMAC-SHA256、HMAC-SHA384、HMAC-SHA512 等多种算法,输出 Hex 与 Base64 两种格式。所有计算在浏览器本地完成,密钥不会上传到任何服务器。

核心特性

多算法支持

支持 HMAC-SHA1、HMAC-SHA256、HMAC-SHA384、HMAC-SHA512 等主流算法,按需切换。

双格式输出

签名结果同时输出 Hex 与 Base64 两种格式,适配不同接口规范要求。

Web Crypto 原生加速

基于浏览器原生 crypto.subtle API,硬件加速计算,性能与安全性均有保障。

Unicode 兼容

通过 TextEncoder 以 UTF-8 编码处理输入,对中文等多字节字符计算结果与主流库一致。

本地处理零上传

所有签名计算在浏览器内完成,包含密钥的敏感请求可放心处理。

使用场景

1

调试第三方 API 签名

调用 AWS、阿里云、腾讯云等需要 HMAC 签名的 API 时,使用本工具快速验证签名计算结果是否正确。

2

Webhook 签名校验

实现 GitHub、Stripe、微信支付等 Webhook 接收端时,校验请求头中的 HMAC 签名是否正确。

3

JWT 签名生成

实现 JWT 令牌时,使用本工具生成 HMAC-SHA256 签名,验证 JWT 实现是否正确。

4

消息防篡改设计

设计系统间通信时,使用 HMAC 为消息添加签名,确保传输过程中消息不被篡改。

常见问题

HMAC 与普通哈希有什么区别?

普通哈希(如 SHA-256)只对消息内容计算摘要,任何人都可以计算;HMAC 结合密钥与消息计算签名,只有持有密钥的双方才能生成与验证,因此可以验证消息的真实性,而不仅是完整性。

HMAC 是加密吗?

不是。HMAC 是消息认证算法,不是加密算法。它无法解密还原原文,只能用于验证消息是否被篡改、是否由持有密钥的发送方发出。如需加密请使用 AES、RSA 等加密算法。

密钥应该怎么生成?

建议使用密码学安全的随机数生成器(如 crypto.getRandomValues)生成 32 字节以上的随机字符串作为密钥。切勿使用短字符串、可预测内容或与代码一起提交的硬编码密钥。

不同语言的 HMAC 计算结果一致吗?

一致。HMAC 是标准算法(RFC 2104),不同语言(JavaScript、Python、Java、Go)的实现结果完全相同,前提是输入的消息、密钥、编码方式与算法一致。