RSA算法个人理解整理

RSA算法个人理解整理

RSA算法个人理解整理

相关知识点

1.欧拉函数:

对于一个正整数n,小于n的正整数中与n互质的正整数个数(包括1)的个数,记作 φ(n)。
欧拉函数通式:
在这里插入图片描述
例如:10的质因数为2,5。那么欧拉函数:φ(10) = 10 × (1﹣1/2) × (1-1/5)。
再比如:28的质因数为2,7。那么28的欧拉函数:φ(28) = 28 × (1 -1/2) × (1-1/7) = 12
再比如:φ(11) = 11 × (1 -1/11) = 10 (特别规定:n是素数,则欧拉函数为n-1)

2.欧拉函数的一些性质:

a.若n为质数,则φ ( n ) = n - 1;
b.若m与n互质,则φ ( n*m ) = φ ( n ) * φ ( m );
c.若n为奇数时,φ ( 2n ) = φ ( n );
d.若正整数n与k互质,那么就有
在这里插入图片描述

RSA加密算法的基本特征:

1.公钥PK是公开的,私钥SK是保密的。
2.私钥SK是由公钥决定的。
(但是由于某个大数n的欧拉函数φ (n)目前无法直接计算得到,所以由公钥推导计算私钥几乎行不通!! )
3.加密算法E、解密算法D也都是公开的。
4.RSA的密钥长度一般:1024,2048,3072,7680等

RSA加密的描述

1.公钥 = (E,N)
2.私钥 = (D,N)
那么秘钥对表示为:(E,D,N)
秘钥对生成步骤:
① 求N ② 求L(L为中间过程的中间数) ③ 求E ④ 求D

①.求N: N = p × q

准备两个大的互质数p,q(这两个数太小则会容易破解)。将p乘以q就是N。
(如果互质数p和q足够大,那么根据目前的计算机技术和其他工具,至今也没能从N分解出p和q,
换句话说,不可能从公钥推出私钥。)

②.求L: L = lcm(p - 1, q - 1)

L 是p-1和q-1的最小公倍数。

③.求E: E比L小比1大,且E和L最大公约数为1(备注:互质)

1 < E < L
gcd(E,L)=1
(之所以需要E和L的最大公约数为1,是为了保证一定存在解密时需要使用的数D)
公钥对为 (E, N)

④.求D: 1 < D < L, 且E*D mod L = 1

1 < D < L
E*D mod L = 1
数D是由数E计算出来 (实际中,数D必须保证足够大)
私钥对为 (D, N)

最后

通过以上得到公钥对(E, N)进行加密的密文,可以用私钥对(D, N)解密

举个例子

第一步求N:
p=1001783
q=89787751
N=89,947,842,560,033 = p * q

第二步求L:
L= lcm(1001782, 89787750) 即(1001783 - 1) 与(89787751 - 1)的最小公倍数
L=44,973,875,885,250 = 2500891355513*9209

第三步求E:
E取值7
gcd(E, L)= gcd(7, 44,973,875,885,250)= 1

公钥对 = (E, N) = (7, 89,947,842,560,033)

第四步求D:
7 * D mod 44973875885250 = 1
得到 D = 32,124,197,060,893

私钥对 = (D, N) = (32,124,197,060,893, 89,947,842,560,033)

RSA加解密的要点

互质的p,q的选择:
① 保证互质,不能靠的太近
② p-1和q-1的因子不能太小,否则N可以很快被分解
③ 产生p、q的随机数,必须要求随机和不可预测。(开源的非常好的随机数算法不能使用)

小贴士

如何分解大整数 N?
1、当 N 的长度较小时,采用爆破
2、当 N 的因数p、q相差较小或相差很大时,可以采用离线工具yafu来分解
3、当 N 的位数过大时,且不满足上述条件,可以用在线网站 factordb。该网站类似于彩虹表,将已被分解的大数结果存储起来,只需要输入查询即可。
4、通常,通过优化处理降N简化过程,中国剩余定理(CRT)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值