Message Digest,Message Authentication Code和HMAC有什么区别?

我对消息摘要的理解是,它是与encryption数据一起发送的一些数据的encryption散列,因此您可以validation数据没有被篡改。 这个和消息authentication码(MAC)和散列MAC(HMAC)之间有什么区别?

  • 消息摘要algorithm采用单个input – 消息 – 并产生一个“消息摘要”(又名哈希),它允许您validation消息的完整性:对消息的任何更改将(理想情况下)导致不同的哈希正在生成。 攻击者可以replace消息和摘要,完全能够用新的有效对replace消息和摘要。
  • MACalgorithm需要两个input – 一个消息和一个密钥 – 并产生一个MAC,它允许你validation消息的完整性真实性:任何对消息秘密密钥的改变将(理想地)导致一个生成不同的MAC。 没有秘密的人应该能够生成MAC计算来validation; 换句话说,可以使用MAC来检查MAC是否由可以访问秘密密钥的一方产生。
  • HMACalgorithm仅仅是一种特定types的MACalgorithm,它在内部使用哈希algorithm(而不是例如encryptionalgorithm)来生成MAC。
  • 消息摘要只是消息的散列。 它是应用于input数据的encryption散列函数的输出,被称为消息
  • 消息authentication码 (MAC)是certificate消息完整性并且不容易被伪造的一条信息。
  • HMAC是由RFC 2104定义的特定种类的MAC。

维基百科有好的文章涵盖所有这些术语:请参阅消息摘要 , 消息authentication代码和HMAC 。