HMAC(Hash-based Message Authentication Code,基于哈希的消息认证码)是一种通过特定哈希函数(如 MD5, SHA1, SHA256),结合一个加密密钥而形成的报文鉴权机制。
Hash(message + key),HMAC 采用了双重哈希构造(内层与外层填充),能有效抵抗“长度扩展攻击”。本工具支持多种主流哈希函数作为底层实现,满足不同场景的安全需求:
| 算法名称 | 输出长度 | 安全级别 | 建议场景 |
|---|---|---|---|
| HMAC-SHA256 | 256 位 (64字符) | 极高 | 现代 API 鉴权(如 AWS, 阿里云 SDK) |
| HMAC-SHA1 | 160 位 (40字符) | 中等 | 旧版 OAuth 协议、Git 哈希校验 |
| HMAC-MD5 | 128 位 (32字符) | 较低 | 对性能要求极高且安全性非首要的场景 |
| HMAC-SHA512 | 512 位 (128字符) | 最高 | 金融级安全及高度机密数据校验 |
HMAC 的运算逻辑可以简述为以下步骤:
Q:HMAC 和普通的 SHA256 加密有什么区别?
A: 普通 SHA256 只需要消息内容即可生成指纹;而 HMAC 必须提供一个密钥 (Key)。即使消息完全相同,密钥不同生成的 HMAC 值也完全不同。这常用于防止他人伪造消息。
Q:为什么我生成的 HMAC 值与服务器验证的不匹配?
A: 请检查以下三点:
Q:HMAC 是可逆的吗?可以解密吗?
A:不可逆。 HMAC 属于单向散列函数。它只能用于“验证”,即接收方用相同的算法和密钥再算一遍,对比结果是否一致。
crypto、Python hmac 库及 Java Mac 类库的输出结果。更多HMAC相关基础知识: HMAC 基础知识:理念、数学结构、安全性和应用场景