| 受影响 | MD5、SHA-1、SHA-2(Merkle–Damgård 结构) |
|---|---|
| 不受影响 | SHA-3、SHAKE、BLAKE2(海绵/树结构) |
| 防护 | 用 HMAC 构造密钥化认证,或改用 SHA-3/BLAKE2 |
| 典型误用 | 以 sha256(secret + data) 作为签名 |
安全写法(Python)
安全写法(Python)
import hmac, hashlib
# 不要:hashlib.sha256(secret + data)
# 使用 HMAC 构造
tag = hmac.new(secret, data, hashlib.sha256).hexdigest()该问题只影响「密钥与消息拼接」的自研构造;标准协议与成熟库的 HMAC 实现不受影响。