HMAC(Hash-based Message Authentication Code)是一种带密钥的消息认证码,定义在 RFC 2104。下面重点说明生成方法。
HMAC如何批量得到结果
生成 HMAC:准备密钥与消息的字节 → 选择算法 → 调用标准库 HMAC 函数 → 输出十六进制或 Base64。不要自己用字符串拼接去“模拟”。
import hmac,hashlib
hmac.new(b"key", b"abc", hashlib.sha256).hexdigest()
# 9c196e32dc0175f86f4b1cb89289d6619de6bee699e4c378e68309ed97a1a6ab
示例
输入:密钥 "key",消息 你好,世界
计算结果:ecebc269659999d50a6f74743f5814cf08000c7f7da1bf4efd46ed651778ed94
说明:HMAC-SHA256,密钥与消息均按 UTF-8 字节计算。
注意事项
- 密钥一旦写进前端页面就等于公开
- 只验证签名而不验证时间戳/随机数,可能遭受重放
- 消息或密钥的换行、空格都会改变结果
- HS256 的 JWT 若被改成 alg=none 或换成公钥算法,要在校验库中明确限定算法
命令行示例
# OpenSSL
echo -n "abc" | openssl dgst -sha256 -hmac "key"
# Python 见下文
本站的HMAC计算工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【密钥多长合适?】至少与哈希输出相当,例如 HMAC-SHA256 建议 32 字节随机密钥。
【“key”+“abc”的 HMAC-SHA256 是多少?】9c196e32dc0175f86f4b1cb89289d6619de6bee699e4c378e68309ed97a1a6ab。
【JWT 的 HS256 是 HMAC 吗?】是,即 HMAC-SHA256 作用于 header.payload。
文中示例可以在本站对应工具中验证;处理密钥、证书等敏感数据时,请注意保护隐私。
标签: 数码开发