消息摘要,消息验证代码和HMAC之间有什么区别?

zer*_*lus 56 security hmac message-digest

我对消息摘要的理解是,它是与加密数据一起发送的一些数据的加密散列,因此您可以验证数据是否未被篡改.这与消息认证码(MAC)和散列MAC(HMAC)之间有什么区别?

Luk*_*keH 92

  • 消息摘要算法采用单个输入 - 消息 - 并生成"消息摘要"(也称为散列),允许您验证消息的完整性:对消息的任何更改(理想情况下)将导致不同的散列正在生成.可以替换消息和摘要的攻击者完全能够使用新的有效对替换消息和摘要.
  • MAC算法采用两个输入 - 消息和密钥 - 并生成一个MAC,允许您验证消息的完整性真实性:对消息密钥的任何更改(理想情况下)将导致生成不同的MAC.没有人可以访问该秘密应该能够生成验证的MAC计算; 换句话说,MAC可以用于检查MAC是否是由有权访问密钥的一方生成的.
  • HMAC算法仅是特定类型的MAC算法,其在内部使用散列算法(而不是例如加密算法)来生成MAC.


Ond*_*cny 19

  • 消息摘要是一个简单的消息的散列.它是应用于输入数据的加密哈希函数的输出,称为消息.
  • 消息认证码(MAC)是一条信息,证明一个消息的完整性,并且不能被容易地仿造.
  • HMAC是特定种类的由下式定义的MAC RFC 2104.

维基百科有很多涵盖所有这些术语的文章:请参阅消息摘要,消息验证代码HMAC.