图解非对称加密

学习 HTTPS 必备的 RSA 算法的基础

概念

所谓非对称加密,就是服务器和客户端,在不直接互通私钥的情况下,通过公钥和互相发送的密文,推出本次连接使用的密钥

非对称加密涉及的数学原理非常多,想了解的可以看 非对称加密算法–RSA加密原理

本文不解释数学原理,只讲解加密的具体流程

流程

首先看下图,下图对流程作出了简单描述

RSA图解

接下来开始具体描述

  1. 设服务器有一组公钥 [k1,k2] 和一个取余公式 p=>k1**p%k2,其中 k1、k2、p 均要求是质数
  2. 服务器收到了客户端的连接请求,将公钥发给客户端
  3. 服务器产生一个随机质数 p,代入公钥求得密文 m1,发送给客户端
  4. 客户端也产生一个随机质数 q,代入公钥求得密文 m2,发送给服务器
  5. 服务器和客户端各自使用自己收到的密文,取代公钥中的 k1,求得结果就是共同的密钥
  6. 往后的通信中,双方均使用该密钥,进行对称加密通信

显然 k2 要尽可能大,才能尽可能减小碰撞

现在代入值计算一下是否正确

  1. 设 k1=13,k2=31,p=23,q=19
  2. m1 = 13**23%31 =24m2 = 13**19%31 = 21
  3. 21**23%31 = 1724**19%31 = 17
  4. 验证完毕

感兴趣的朋友可以自行验证一下,面试的时候能答出上述流程就行了

至于数学原理,我不知道你能不能看懂,反正我看不懂,2333

--It's the end.Thanks for your read.--