| 反例 | sha256(secret + message):可被长度扩展利用 |
|---|---|
| 正例 | HMAC-SHA256(RFC 2104 构造) |
| 替代 | SHA-3/BLAKE2 的海绵/树结构天然抗长度扩展 |
| 比较 | 使用 hmac.compare_digest 做常量时间校验 |
正反例对照(Python)
正反例对照(Python)
import hashlib, hmac
# 反例:不要这样校验来源
bad = hashlib.sha256(secret + msg).hexdigest()
# 正例
good = hmac.new(secret, msg, hashlib.sha256).hexdigest()
hmac.compare_digest(good, received)许多 Webhook 与开放平台使用 HMAC-SHA256 作为签名算法,对接时应严格按文档构造待签串并做常量时间比较。