数字签名(DigitalSignature)技术是不对称加密算法的典型应用。数字签名的应用过程是,数据源发送方使用自己的私钥对数据校验和或其他与数据内容有关的变量进行加密处理,完成对数据的合法“签名”,数据接收方则利用对方的公钥来解读收到的“数字签名”,并将解读结果用于对数据完整性的检验,以确认签名的合法性。
签名方:
发送 "
正文
"
+ "签名"
签名:(1)对正文做摘要,得到定长的一段摘要。假设为16字节。
(2) 用 私钥 对其加密,加密后的数据称为签名
(3) 发布证书,把 公钥 放在证书
接收方:
接收到 " 正文 " + "签名",需要证实正文是由签名方发布的,不是仿冒的。
验签名: (1)验证书,确认证书本身是合法机制发布的
(2) 用证书里的 公钥 对签名进行解密,得到一段摘要D1 (16字节)
(3) 对正文进行MP5运算得到新的摘要 D2
如果D2 = D1,说明正文是由签名方发布的,且内容是完整的
如果D2 != D1,说明正文被人窜改或仿冒
------- 为什么不会被仿冒 -------
- 只发送" 正文 " :
接收方在收到" 正文 "后不知道其内容有没有被人窜改
- 只发送" 正文 " + " 摘要 ":
仍然会被攻击,黑客可以修改正文,然后自己做一段摘要
- 发送 "正文 + "签名":
由于黑客不可能拥有私钥,所以无法仿冒签名。
签名方:
发送 "
接收方:
------- 为什么不会被仿冒 -------
- 只发送" 正文 " :
- 只发送" 正文 " + " 摘要 ":
- 发送 "正文 + "签名":