(1)非对称加密算法
有两个密钥:公钥和私钥。它们是一对,如果用公钥进行加密,只有用对应的私钥才能解密;如果用私钥进行加密,只有用对应的公钥才能解密。
非对称加密算法实现机密信息的交换过程为:甲方生成一对密钥并将其中一个作为公钥向其他方公开;得到该公钥的乙方使用该密钥对机密信息进行加密后发送给甲方;甲方再用自己的另一个专用密钥对加密后的信息进行解密
(2)算法原理
算法本身基于一个简单的数论知识:给出两个质数,很容易将它们相乘,然而给出它们的乘积,想得到这两个质数就显得尤为困难。如果能够解决大整数(比如几百位的整数)分解的快速方法,那么 RSA 算法将轻易被破解
N(Modulus):模数,是两个大质数P和Q的乘积。N的长度决定了RSA算法的安全性。
E(Public Exponent):公钥指数,通常为65537(0x10001)。E用于加密数据,是公钥的一部分。
P(Prime Factor):质数P,是模数N的一个因子。
Q(Prime Factor):质数Q,是模数N的另一个因子。
DP(D mod (P-1)):D对(P-1)取模的结果,用于解密数据。
DQ(D mod (Q-1)):D对(Q-1)取模的结果,用于解密数据。
Qinv(Q^-1 mod P):Q的模P的乘法逆元,用于解密数据。
D(Private Exponent):私钥指数,E的模反元素。(本人习惯大写的,小写的也行)
关系式
N=P*Q
T=(P-1)*(Q-1) (欧拉函数)
1 <E(公钥)<T,且不是T的因子
(D*E)%T=1
(3)RSA加密
对于明文 x,用公钥 (n,e) 对 � 加密的过程,就是将 x 转换成数字(字符串的话取其 ASCII码或者 unicode 值),然后通过幂取模计算出 y,其中 y 就是密文;即
y=(x的e次方)mod n (不会打指数,只能这样了,大家可在评论区留言教我一下,谢谢)
(4)RSA解密
类似加密,x=(y的d次方) mod n