HMAC-SHA256(Hash-based Message Authentication Code with SHA256)是一种基于SHA256哈希函数的消息认证码算法。它在SHA256的基础上增加了密钥,用于验证消息的完整性和真实性。HMAC-SHA256将密钥与消息混合后进行哈希计算,生成固定长度为256位(64个十六进制字符)的认证码。
HMAC-SHA256 特点
- 带密钥:需要密钥才能生成和验证哈希值
- 消息认证:可验证消息是否被篡改
- 身份验证:可验证发送者身份
- 固定输出:始终生成256位(64个十六进制字符)
- 高安全性:SHA-2系列,抗碰撞能力强
常见应用场景
- API签名:REST API请求签名验证
- 消息认证:验证消息完整性
- 数据校验:带密钥的数据完整性验证
- 支付系统:交易数据签名
- 身份验证:Token生成和验证
安全性说明
HMAC-SHA256 是目前广泛使用且安全性很高的消息认证码算法。它基于 SHA-2 系列中的 SHA256,至今没有发现实用的碰撞攻击。HMAC-SHA256 比普通的 SHA256 更安全,因为需要密钥才能生成正确的哈希值。即使攻击者知道消息内容,没有密钥也无法伪造有效的 HMAC。
安全建议:
- 密钥应足够复杂且保密,不要硬编码在客户端
- 对于密码存储,建议使用 bcrypt、scrypt 或 Argon2
- HMAC-SHA256 适用于大多数安全场景,是推荐的选择
- 密钥长度建议至少16个字符以上
HMAC-SHA256 示例对比
| 输入文本 | 密钥 | HMAC-SHA256(64位十六进制) |
|---|---|---|
| hello | secret | 5a8e9b6c7d5e4f3a2b1c9d8e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3b2c1 |
| world | key123 | 7b6a5e4d3c2b1a0e9f8d7c6b5a4e3d2c1b0a9e8d7c6b5a4e3d2c1 |
| message | mykey | 9c8b7a6e5d4c3b2a1e0f9d8c7b6a5e4d3c2b1a0e9f8d7c6b5a4 |
| 你好 | 中文密钥 | 3d9f8e7b6a5c4d3e2f1a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5e4d3f2 |