HMAC(Hash-based Message Authentication Code)是一种带密钥的消息认证码,定义在 RFC 2104。下面重点说明函数与示例。
用 PHP 处理 HMAC
下面是 PHP 中处理HMAC的常用写法:
echo hash_hmac("sha256", "abc", "key");运行前确认输入的字符集(推荐 UTF-8),结果可以用本站工具交叉核对。
示例
输入:密钥 "key",消息 <b>粗体</b>
计算结果:0b1cc15da412776afe64d1221ece92de429124c33dde206fa87aef71ea511692
说明: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
- 同一消息、不同密钥,结果完全不同
Python 示例
下面是 Python 中处理HMAC的常用写法:
import hmac,hashlib
hmac.new(b"key", b"abc", hashlib.sha256).hexdigest()
# 9c196e32dc0175f86f4b1cb89289d6619de6bee699e4c378e68309ed97a1a6ab运行前确认输入的字符集(推荐 UTF-8),结果可以用本站工具交叉核对。
本站的HMAC计算工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【密钥多长合适?】至少与哈希输出相当,例如 HMAC-SHA256 建议 32 字节随机密钥。
【“key”+“abc”的 HMAC-SHA256 是多少?】9c196e32dc0175f86f4b1cb89289d6619de6bee699e4c378e68309ed97a1a6ab。
【JWT 的 HS256 是 HMAC 吗?】是,即 HMAC-SHA256 作用于 header.payload。
文中示例可以在本站对应工具中验证;处理密钥、证书等敏感数据时,请注意保护隐私。
标签: 数码开发