首页/安全/加密与证书速查/HMAC 消息认证码
本包目录(305 条)
加密算法基础95 条
TLS 与 HTTPS60 条证书与 PKI30 条OpenSSL 实战30 条证书运维排查49 条密钥管理41 条

HMAC 消息认证码

RFC 2104 / FIPS 198-1 定义的密钥化认证码:H((K⊕opad) || H((K⊕ipad) || M)),用于验证消息完整性与来源,广泛用于 API 签名与 JWT。

加密与证书速查安全更新于 2026-10-12
标准RFC 2104 / FIPS 198-1
推荐哈希SHA-256 及以上
密钥长度建议不小于哈希输出长度(如 32 字节)
用途API 签名、TLS 1.2 PRF、JWT HS256、Webhook 校验

计算与校验

计算与校验
openssl dgst -sha256 -hmac 'my-secret' message.txt
# Python
import hmac, hashlib
hmac.new(b'my-secret', b'message', hashlib.sha256).hexdigest()
校验 HMAC 时使用常量时间比较(如 hmac.compare_digest),逐字节比较会泄漏时序信息。

易错点

  • 密钥过短(如 8 字节)会削弱安全性,也应避免用口令直接充当 HMAC 密钥
  • 把 HMAC 结果与原文一起传输时,比较顺序与返回值同样要防时序泄漏

数据来源与参考

  • RFC 2104(HMAC)
  • FIPS 198-1(HMAC 标准)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌