一直分不清公钥和私钥有啥区别所以花时间理解了一下,若有不对之处恳请指正~ 

只有公钥和私钥的相关概念,还没研究怎么实现

前置条件

A 公钥 私钥
B A公钥
C A公钥  C公钥 C私钥

相关场景

a)公钥的使用
B用A的公钥给A发消息

b) 私钥解密
A收到消息之后用私钥解开,可查看B给A发的消息

c)数字摘要
A看到消息要给B回信息
步骤如下:
1. 先写回消息的内容
2. 根据B发送的消息用hash算法生成摘要(注意此时是拿的B消息,为了满足下面数字摘要的特征2,为后面解密做准备)

数字摘要的特征如下:(摘自: )
1、无论传入的消息有多长都会返回固定长度的信息。
2、传入的消息不同,返回的数字摘要也不相同。但是相同的输入必定会产生相同的输出。
3、由于消息摘要并不包含原文的完整信息,一次无法从摘要中恢复出原来的信息。

d) 数字签名
A用自己的私钥对数字摘要加密,生成数字签名,B回消息给A的时候把这串数字签名也发送给A

e) 收信人A用公钥解开数字签名对比数字摘要
B收到A发的回信之后用公钥解开数字签名,拿到数字摘要
此时B也自动会生成一个数字摘要(这里我不太明白这个摘要咋生成的)
两个数字摘要一致的话,B拿到了A回信的内容

f) 非收信人用公钥解开数字签名对比数字摘要
C截取了A发的回信,试图用公钥解开A的回信,此时我认为C是能够拿到A回信的数字摘要的
但是C自动生成的数字摘要和A回信中的数字摘要是不一致的(因为B和C的输入条件不一致的,A是根据B给他发的消息生成的摘要),所以C拿不到A的回信

g)CA认证(避免篡改公钥)
C想截取B给A发的消息.
B原本应该拿着A的公钥给A发消息,但是C悄咪咪的把A的公钥换成了C自己的公钥,但是B不知情,在这种情况下B继续发消息,他以为他发给A了,实际上被C移花接木了,然后C拿着私钥去解开A发信的内容,成功获取内容
为了避免这种情况就有了CA认证,将公钥和实体对应起来,避免篡改