使用指南
HMAC:密钥、消息与认证码的关系
理解 HMAC 的密钥和消息如何共同决定认证码,以及它与普通摘要和密码存储的区别。
JTools 维护者 · 更新于 2026-10-14
HMAC 将密钥与消息一同输入哈希函数。没有相同密钥的人即使知道消息和认证码,也不能可靠地为另一条消息生成有效认证码。
消息与密钥都先转换为字节。UTF-8、UTF-16LE、Latin-1 的选择,以及任何空格或换行变化,都会使认证码不同。双方必须约定完全相同的编码和输出格式。
新系统通常选择 HMAC-SHA-256 或更高版本。SHA-1 只适用于已有协议的兼容场景;认证码比较应使用常量时间比较函数,避免暴露匹配位置。
HMAC 不能替代密码存储。密码需要使用 Argon2、scrypt 等刻意消耗资源的专用方案,并为每个密码生成独立盐。
打开工具