散列是消息的摘要或指纹,它本身既不提供完整性,也不提供身份验证,因为它容易受到中间人攻击的影响。假设 A 想发送一个消息 M,结合 M 的 hash H 发送给 B,而 C 捕获该消息并生成 Message M2和 hash H2,然后将其发送给 B。现在 B 根本无法验证这是否是 A 的原始消息。但是,哈希可以用于其他一些实现完整性和身份验证的方法,例如 MAC。
MAC 也是消息的摘要,它提供完整性和身份验证。MAC 可以通过多种方式计算。最简单的方法是使用具有两个输入(消息和共享密钥)的散列函数。共享密钥的使用增加了 MAC 的身份验证能力,从而提供完整性和身份验证。然而,MAC 仍然不提供不可否认性,因为拥有共享密钥的任何一方都可以产生消息和 MAC。
数字签名和公钥加密技术正在发挥作用。