最近由于要连接远程的linux服务器,接触到了公钥和私钥的概念,就百度学习了一下,因为不整理一下很容易忘记,所以整理成博客。

1.优先明白一个概念:公钥是私钥生成的;公钥是私钥的拥有者发给大家的,就是大家都有的。

2.公钥加密,私钥解密(保证数据的秘密):

  • 【发送方】的公钥是【接收方】用私钥生成,给的。
  • 【发送方】先用公钥将文件加密,将加密后文件发送给【接受方】,这时候文件给别人窃取也没有关系,他们拿到的只是一堆看不懂的字符串。
  • 【接受方】用私钥对加密文件进行解密得到正确文件。

rsa 一个公钥对多个私钥 rsa 公钥 私钥_rsa 一个公钥对多个私钥

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.私钥签名,公钥验签(为了验证发送者的身份):

  • 公钥都是私钥生成给的
  • 【发送方】根据要发送的内容生成一个签名(类似MD5加密),【接收方】使用公钥对”发送的内容“再得到一个签名,和发送方传递的签名对比。
  • 比如我发送一段短信给我的好朋友,但是我的好朋友说有人冒充我给他发信。怎么办呢?我把我要发的信,内容是c,用我的私钥,加密,加密后的内容是d,发给x,再告诉他解密看是不是c。他用我的公钥解密,发现果然是c。这个时候,他会想到,能够用我的公钥解密的数据,必然是用我的私钥加的密。只有我知道我得私钥,因此他就可以确认确实是我发的东西。
  • 这样我们就能确认发送方身份了。这个过程叫做数字签名。当然具体的过程要稍微复杂一些。

rsa 一个公钥对多个私钥 rsa 公钥 私钥_数据加密_02

   4.完整交互流程:

  • 双方各自持有一对公钥、私钥:交换公钥。
  • 发送方(A)使用接收方(B)的公钥对数据加密,使用自己的私钥对加密数据进行签名。然后组装加密数据和签名,发送给接收方(B)
  • 接收方(B)接收到A的数据后。先使用发送方(A)的公钥数据加密数据进行验签,签名无问题后。再使用自己的私钥对数据进行解密。