什么是非对称加密:加密和解密并不使用同一个密钥,在应用场景中一般客户端持有公钥,服务器持有私钥。
公钥:
公钥=(E,N)。
公钥的加密为:密文==(原文的E次方)mod N
私钥:
私钥=(D,N)
私钥=(D,N):原文==(密文的D次方)mod N
注意:
虽然我们刚刚只提到了公钥加密,私钥解密。其实私钥也可以加密,公钥也可以解密,流程和之前的是一样的(例如:私钥加密就是对原文取D次幂再mod N)。
公钥和私钥是怎么来的(我们是有追求的程序员,当然要探讨一下公钥和私钥是怎么来的):
1:第一步先找到两个质数p=3,q=11
2:N:这里的N就是刚刚提到的用来取余N的了。N=p*q;
3:T:这里的T为中间数,我们后续用他来计算公钥和私钥。T=((p-1)*(q-1))
4:E:这里的E就是公钥中的E了。E有一些条件:(1)E是质数,(2)1<E<T,(3)E不能是T的因子。在满足这些条件数中选一个来做公钥的E
5:D:这里的D是组成私钥的D了,他的计算公式如下:(D*E)%T=1
非对称加密为什么安全性高?
如果我们想要破解公钥加密的数据,就需要得到私钥。
私钥中的D是保密的,D是由中间数T计算而来,而T是由一开始选点的两个质数p,q计算而来,
p和q可以由N推出来,但是如果p和q的值过大,N就会很大,p和q的情况就会很多
所以计算出T的难度是很高的