HMAC 认证工具
HMAC 密钥生成器
生成用于认证与消息完整性校验的 HMAC 密钥。支持 SHA-256、SHA-384、SHA-512,并可自定义长度。
HMAC 密钥
HMAC-SHA-256 • 输出 256 位
256 位
配置
32 字节
1664128
安全强度最佳
32 字节 = 256 位熵
什么是 HMAC 密钥?
HMAC 密钥(基于哈希的消息认证码密钥)用于生成与校验消息认证码。HMAC 结合密钥与哈希函数(如 SHA-256),同时保证消息完整性与来源可信。密钥必须保密,仅在需要生成或校验签名的双方之间共享。
我们的 HMAC 密钥生成器可用于 API 认证、Webhook 签名、会话令牌等安全场景。密钥应随机且足够长,以抵抗暴力破解。
HMAC 密钥长度建议
密钥强度取决于算法与长度。下列配置是常见且安全的选择:
HMAC-SHA-256
最常用算法
32 字节以上
至少 256 bit
HMAC-SHA-384
更高安全强度
48 字节以上
至少 384 bit
HMAC-SHA-512
最高安全强度
64 字节以上
至少 512 bit
常见 HMAC 密钥场景
- →API 认证: 签名 API 请求,确保请求未被篡改且来自可信来源。
- →Webhook 签名: GitHub、Stripe、Shopify 等使用 HMAC 签名 Webhook 负载,便于你验证事件真实性。
- →会话令牌: 对会话令牌签名,防止会话劫持并保证数据完整性。
- →数据完整性校验: 校验存储或传输的数据是否被篡改。
如何使用 HMAC 密钥生成器
- 1选择长度 HMAC-SHA-256 选 32 字节,SHA-384 选 48 字节,SHA-512 选 64 字节。
- 2启用全部字符类型 字符类型越丰富,随机性越强。
- 3生成并复制 存入环境变量或密钥管理服务中。
HMAC 密钥使用示例
以下示例演示不同语言中如何使用 HMAC 密钥:
Node.js 示例
const crypto = require('crypto');
const secret = process.env.HMAC_SECRET_KEY;
const message = 'Hello, World!';
const hmac = crypto.createHmac('sha256', secret);
hmac.update(message);
const signature = hmac.digest('hex');
console.log(signature);Python 示例
import hmac
import hashlib
import os
secret = os.environ['HMAC_SECRET_KEY'].encode()
message = b'Hello, World!'
signature = hmac.new(secret, message, hashlib.sha256).hexdigest()
print(signature)HMAC 密钥最佳实践
- 长度足够: 长度应不低于算法输出大小(SHA-256 为 32 字节,SHA-384 为 48 字节,SHA-512 为 64 字节)。
- 安全存储: 不要硬编码密钥,使用环境变量、密钥管理系统或加密配置文件。
- 定期轮换: 按周期轮换密钥,发现泄露风险时立即替换。
- 用途隔离: 不同用途使用不同密钥,避免一把钥匙开多把锁。
- 校验方式正确: 比较签名时使用常量时间比较,防止时序攻击。
- 不要记录或暴露: 密钥不应出现在日志、错误信息或前端代码中。
HMAC 密钥生成器常见问题
这个 HMAC 密钥生成器安全吗?
安全。使用 Web Crypto API 生成加密级随机数,密钥在浏览器本地生成,不会上传到服务器。
HMAC 密钥和 JWT 密钥有什么区别?
HMAC 密钥用于通用消息认证;JWT 密钥用于签 JSON Web Token。JWT 使用的 HS256/384/512 本质上也是 HMAC。
可以用同一把密钥跑多种算法吗?
理论上可行,但不推荐。不同算法或用途使用独立密钥更安全,也便于轮换。
如何校验 HMAC 签名?
用密钥重新计算签名并与传入签名比较,建议使用常量时间比较函数(如 Node.js 的 crypto.timingSafeEqual)。
相关密钥生成器
资源入口
隐私与安全
所有 HMAC 密钥均在浏览器本地生成,使用 Web Crypto API 的加密级随机数。不会上传或存储任何数据。
