学习 HTTPS 必备的 RSA 算法的基础
概念
所谓非对称加密,就是服务器和客户端,在不直接互通私钥的情况下,通过公钥和互相发送的密文,推出本次连接使用的密钥
非对称加密涉及的数学原理非常多,想了解的可以看 非对称加密算法–RSA加密原理
本文不解释数学原理,只讲解加密的具体流程
流程
首先看下图,下图对流程作出了简单描述
接下来开始具体描述
- 设服务器有一组公钥 [k1,k2] 和一个取余公式
p=>k1**p%k2
,其中 k1、k2、p 均要求是质数 - 服务器收到了客户端的连接请求,将公钥发给客户端
- 服务器产生一个随机质数 p,代入公钥求得密文 m1,发送给客户端
- 客户端也产生一个随机质数 q,代入公钥求得密文 m2,发送给服务器
- 服务器和客户端各自使用自己收到的密文,取代公钥中的 k1,求得结果就是共同的密钥
- 往后的通信中,双方均使用该密钥,进行对称加密通信
显然 k2 要尽可能大,才能尽可能减小碰撞
现在代入值计算一下是否正确
- 设 k1=13,k2=31,p=23,q=19
m1 = 13**23%31 =24
,m2 = 13**19%31 = 21
21**23%31 = 17
,24**19%31 = 17
- 验证完毕
感兴趣的朋友可以自行验证一下,面试的时候能答出上述流程就行了
至于数学原理,我不知道你能不能看懂,反正我看不懂,2333