2010-09-12 101 views

回答

78
  • 甲消息摘要算法采用单个输入 - 消息 - 和产生“消息摘要”(又名散列),它允许您验证消息的完整性:任何变化到消息将(理想)导致产生不同的散列。可以替换消息和摘要的攻击者完全能够用新的有效对替换消息和摘要。
  • MAC算法有两个输入端 - 的消息和密钥 - 并且产生MAC,其可以验证完整性的消息的真实性:任何变化到消息秘密密钥将(理想地)导致产生不同的MAC。没有秘密的人应该能够产生验证的MAC计算;换句话说,可以使用MAC来检查MAC是否由可访问密钥的一方产生。
  • HMAC算法只是一种特定类型的MAC算法,它在内部使用散列算法(而不是例如加密算法)来生成MAC。
+0

@Rook这里很老的评论,但CMAC只是MAC的一种特定形式。当然,没有什么能反对使用AES-CMAC。 – 2012-08-11 13:32:54

+1

@owlstead你的权利,我很困惑,因为一些图书馆将其称为模式。 – rook 2012-08-11 18:00:06

+1

“一个MAC可以用来检查MAC是否生成...”不应该是“...检查_message_是否生成...”? – leonbloy 2017-09-20 13:46:28

14
  • 消息摘要是一个简单的消息的散列。它是应用于输入数据的加密散列函数的输出,它被称为消息
  • A 消息验证码(MAC)是一条证明消息完整性并且不容易被伪造的信息。
  • A HMAC是由RFC 2104定义的特定种类的MAC。

维基百科有很好的文章涵盖了所有这些条款:见Message DigestMessage Authentication CodeHMAC

+1

对于MAC,完整性和真实性都可以证明,因为发送方和接收方共享一个公共密钥。 – Nate 2013-07-01 00:08:44