RSA算法

RSA算法:

1. 准备两个质数 pq
n= pq

2.求中间数L
l =最小公倍数(p-1,q-1) 为 144

3.求E

1<E<L
最大公约数(e,l)=1

4.求D

1<D<L
E*D mol L = 1


实践

1. 准备两个很小对质数
p = 17
q = 19
N = p*q = 323

2. L = 最小公倍数(16和18的) 为 144

3. 1<E<L 最大公约数(E和L) =1
即 1 <E < 144 最大公约数(E,144) = 1

取5吧

公钥(E、N) = (5,323)

4.求D 1<D<L E*DmodL = 1
即1<D<144 5*Dmod 144 = 1
显然当D=29时满足
1<29<144
5*29mod144 = 145mod 144 = 1
此时私钥= (D,N) = (29,323)

5.加密 准备的明文必须是小于N的数,因为加密或者解密都要mod N 其结果必须小于N
准备明文 = 123
则 密文=明文EmodN=1235mod323=225

6.解密

明文=密文DmodN=22529mod323=123
解密后的明文为123。


为什么这个算法很厉害:
假如我给你公钥(E、N)为(5,323)
那么你就能加密 算出 225这个密文,

然后把255这个密文发给我。

如果我没有私钥我怎么解密呢?

求D的方法是:

1<D<L
E*D mol L = 1

我知道E,N,

下面我需要知道L

如果想知道L需要先知道p-1和q-1

N是两个质数P*Q 但是我如果要找p-1和q-1呢 如果这个数超级大的话

大数分解本身就是一个数学上难题。

原文地址:https://www.cnblogs.com/eret9616/p/8993726.html