HMAC的性能要点

73 0

HMAC(Hash-based Message Authentication Code)是一种带密钥的消息认证码,定义在 RFC 2104。下面重点说明耗时与规模。

HMAC的性能要点

输出长度等于底层哈希:HMAC-SHA256 是 32 字节(64 个十六进制字符),HMAC-SHA512 是 64 字节,HMAC-SHA1 是 20 字节。计算量约为两次哈希。

示例

输入:密钥 "key",消息 a+b=c

计算结果:ba29d2e9ed96a38a614f76112049d435b7fd9466016ae6701b2cb318f331edf2

说明:HMAC-SHA256,密钥与消息均按 UTF-8 字节计算。

核心要点

  • 需要密钥 + 消息 + 哈希算法三个输入
  • 常见组合:HMAC-SHA256、HMAC-SHA1、HMAC-SHA512、HMAC-MD5(后者已不推荐)
  • RFC 2104 测试向量:密钥 Jefe、消息 “what do ya want for nothing?” 的 HMAC-SHA1 为 effcdf6ae5eb2fa2d27416d5f184df9c259a7c79
  • 密钥 “key”、消息 “abc” 的 HMAC-SHA256 为 9c196e32dc0175f86f4b1cb89289d6619de6bee699e4c378e68309ed97a1a6ab
  • 同一消息、不同密钥,结果完全不同

乱码排查

结果只含十六进制或 Base64,本身不乱码。对不上时先打印双方实际使用的密钥长度和消息十六进制。

本站的HMAC计算工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。

常见问题

【JWT 的 HS256 是 HMAC 吗?】是,即 HMAC-SHA256 作用于 header.payload。

【HMAC 能当加密用吗?】不能。它只生成认证码,不隐藏原文。

【和直接 hash(key+message) 有什么不同?】直接拼接有长度扩展等隐患;HMAC 按 RFC 2104 构造,是标准做法。

文中示例可以在本站对应工具中验证;处理密钥、证书等敏感数据时,请注意保护隐私。

署名:123问编辑部 · 最近修订:2026-11-11 · 已按编辑与审核说明检查;内容仅供参考,不构成医疗、法律或投资建议。发现错误可查看纠错方式。

标签: 数码开发

抱歉,评论功能暂时关闭!