HAMC算法

HMAC(Hash-based Message Authentication Code,基于哈希的消息认证码)是一种使用加密哈希函数(如MD5、SHA-1、SHA-256)来验证消息完整性和认证身份的技术
简单来说,HMAC可以确保:
- 消息完整性 - 消息在传输过程中没有被篡改
- 身份认证 - 消息确实来自声称的发送者
为什么需要HMAC?
- 如果只发送明文,B无法确认消息是否被篡改
- 如果只发送"消息+哈希",攻击者可以修改消息并重新计算哈希
- 使用HMAC,需要密钥才能生成正确的认证码,攻击者没有密钥就无法伪造
核心公式
HMAC(K, m) = H( (K ⊕ opad) || H( (K ⊕ ipad) || m ) )- K:密钥
- m:消息
- H:哈希函数(如SHA-256)
- opad:外部填充(0x5c重复)
- ipad:内部填充(0x36重复)
- ||:连接操作
- ⊕ :异或操作
具体做法
这个也很简单了
- 密钥处理
- 如果密钥比哈希函数的块长度长,先对密钥哈希
- 如果密钥短,用0填充到块长度
- 计算内部哈希
inner_hash = H( (K ⊕ ipad) || message )- 计算最终结果
hmac = H( (K ⊕ opad) || inner_hash )总结
这个实际上是多了一个密钥的概念,不过最基本的计算还是hash函数,这个算法思路可以拓展md4,sm3等等,也可以给你自己设计hash算法套进去