1、算法原理
算法本身基于一个简单的数论知识:给出两个素数,很容易将它们相乘,然而给出它们的乘积,想得到这两个素数就显得尤为困难。如果能够解决大整数(比如几百位的整数)分解的快速方法,那么 RSA 算法将轻易被破解。
2、公钥和私钥的生成
1.选择两个大素数p和q(典型值为1024位)
2.计算n=p×q和z=(p-1)×(q-1) // z为n的欧拉函数
3.选择一个与z互质的数,令其为e
4.计算e在模z域上的逆元d。即满足 exd(mod z)= 1
5.公开密钥为(e,n),私有密钥为(d,n)
3、RSA 加密
对于明文x,用公钥(e,n)对x加密的过程,就是将x转换成数字,然后通过幂取模运算出y,其中y就是密文:
y=x^e mod n
4、RSA 解密
对于密文y,用私钥(d,n)对y进行解密的过程,同样是计算幂取模:
x=y^d mod n