MD(消息摘要)、MAC(消息认证码)、数字签名的区别

MD(消息摘要)、MAC(消息认证码)、数字签名的区别

1.MD(消息摘要)

1.1摘要含义

摘要

摘要是哈希值,我们通过散列算法比如MD5算法就可以得到这个哈希值。

摘要只是用于验证数据完整性和唯一性的哈希值,不管原始数据是什么样的,得到的哈希值都是固定长度的。

不管原始数据是什么样的,得到的哈希值都是固定长度的,也就是说摘要并不是原始数据加密后的密文,只是一个验证身份的令牌。所以我们无法通过摘要解密得到原始数据。

2.MAC(消息认证码)

hash算法只能验证数据的完整性,不能防止数据被篡改。比如:遇见中间人攻击,你会发现攻击者对消息进行篡改了,但是通过hash算法计算摘要值,你是无法知道消息被改动过的。因此这个时候就需要MAC算法了。

MAC值 = mac(消息+密钥)

2.2MAC的特点

跟hash算法一样,可以验证数据的完整性。

可以验证数据确实是由原始发送方发出的。

MAC值一般和原始消息一起传输,原始消息可以选择加密,也可以选择不加密,通信双方会以相同的方式生成MAC值,然后进行比较,一旦两个MAC值相同表示MAC验证正确,否则验证失败。

3.数字签名

MAC不能保证消息的不可抵赖性,而数字签名可以保证。

因为数字签名使用的是公钥密码体制,私钥只有你自己才知道;而MAC使用对称加密,既然一方能够验证你的MAC,就能够伪造你的MAC,因为发送方和接收方的秘钥是一样的。当然如果你在MAC中绑定一些关键信息,并通过某些手段,让一方只能生成MAC,另一方只能验证MAC,其实也是可以实现签名效果的。

原文地址:https://www.cnblogs.com/yk20192320/p/15398587.html