RSA密码算法

来源:互联网 发布:怎么释放被占用的端口 编辑:程序博客网 时间:2024/05/17 23:19

RSA加密

=EmodN

E和N的组合就是公钥

RSA解密

=DmodN

D和N的组合就是私钥

生成密钥对

1. 求N
用伪随机数生成器求p和q,p和q都是质数
N = p * q

p和q太小的话,密码会变得容易破译,但太大的话计算时间又会变得很长。例如,假设p和q的大小都是512比特,相当于155位的十进制数字。要求出这样大的质数,需要通过伪随机数生成器生成一个512比特大小的数,在判断这个是不是质数,若不是质数,则重新生成。更多知识请看:[matrix67大神的文章]  (http://www.matrix67.com/blog/archives/234);[维基百科-素性测试](https://zh.wikipedia.org/zh/%E7%B4%A0%E6%80%A7%E6%B5%8B%E8%AF%95)

2. 求L
L = lcm(p - 1,q - 1)
L是p - 1和q - 1的最小公倍数

3. 求E
1 < E < L
gcd(E,L) = 1; E 和 L的最大公约数为1(E和L互质)

之所以要加上E和L的最大公约数为1的条件,是为了保证一定存在解密时需要使用的数D。

4. 求D
1 < D < L
E * D mod L = 1

    要保证存在满足条件的D,就需要保证E和L的最大公约数为1。    简单的来说,E * D mod L = 1 保证了对密文进行解密时能够得到原来的明文。

一旦发现了对大整数的质因数分解的高效算法,RSA就能够被破译

其他公钥密码

  1. EIGamal方式
  2. Rabin方式
  3. 椭圆曲线密码
0 0