HAMC算法

des

HMAC(Hash-based Message Authentication Code,基于哈希的消息认证码)是一种使用加密哈希函数(如MD5、SHA-1、SHA-256)来验证消息完整性和认证身份的技术

简单来说,HMAC可以确保:

  1. 消息完整性 - 消息在传输过程中没有被篡改
  2. 身份认证 - 消息确实来自声称的发送者

为什么需要HMAC?

  • 如果只发送明文,B无法确认消息是否被篡改
  • 如果只发送"消息+哈希",攻击者可以修改消息并重新计算哈希
  • 使用HMAC,需要密钥才能生成正确的认证码,攻击者没有密钥就无法伪造

核心公式

HMAC(K, m) = H( (K ⊕ opad) || H( (K ⊕ ipad) || m ) )
  • K:密钥
  • m:消息
  • H:哈希函数(如SHA-256)
  • opad:外部填充(0x5c重复)
  • ipad:内部填充(0x36重复)
  • ||:连接操作
  • ⊕ :异或操作

具体做法

这个也很简单了

  1. 密钥处理
    • 如果密钥比哈希函数的块长度长,先对密钥哈希
    • 如果密钥短,用0填充到块长度
  2. 计算内部哈希
inner_hash = H( (K ⊕ ipad) || message )
  1. 计算最终结果
hmac = H( (K ⊕ opad) || inner_hash )

总结

这个实际上是多了一个密钥的概念,不过最基本的计算还是hash函数,这个算法思路可以拓展md4,sm3等等,也可以给你自己设计hash算法套进去