HMAC(Hash-based Message Authentication Code)是一种带密钥的消息认证码,定义在 RFC 2104。下面重点说明易错点。
HMAC开发注意事项
- 密钥一旦写进前端页面就等于公开
- 只验证签名而不验证时间戳/随机数,可能遭受重放
- 消息或密钥的换行、空格都会改变结果
- HS256 的 JWT 若被改成 alg=none 或换成公钥算法,要在校验库中明确限定算法
示例
输入:密钥 "key",消息 Hello
计算结果:c70b9f4d665bd62974afc83582de810e72a41a58db82c538a9d734c9266d321e
说明:HMAC-SHA256,密钥与消息均按 UTF-8 字节计算。
特殊字符
空消息也可以计算 HMAC,结果仍取决于密钥和算法;空密钥在实现里往往被允许但不安全。
常见报错
- 签名不一致:密钥、算法、字符集或是否含换行不一致
- TypeError:把字符串密钥和字节密钥混用,应统一编码
- JWT 校验失败:secret 不对或算法被切换
本站的HMAC计算工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【HMAC 能当加密用吗?】不能。它只生成认证码,不隐藏原文。
【和直接 hash(key+message) 有什么不同?】直接拼接有长度扩展等隐患;HMAC 按 RFC 2104 构造,是标准做法。
【密钥多长合适?】至少与哈希输出相当,例如 HMAC-SHA256 建议 32 字节随机密钥。
文中示例可以在本站对应工具中验证;处理密钥、证书等敏感数据时,请注意保护隐私。
标签: 数码开发
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。