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