RSA的解法

仅p,q已知

 

p= 

q=

n=p*q=

φ(n)=(p-1)*(q-1)

随机选择e,e必须与φ(n)互为质数,gcd(e,φ(n))=1.

(质数:2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59... ...)

e最好选择最小的质数,对于d的求解是最方便的,e越大则d越大。

d*e mod φ(n)=1

d=[φ(n)*m+1]/e 其中m从(0、1、2、3、4... ...一直代入)直到计算出的d为整数,且d<φ(n).

 

另外一种计算方式:

按RSA算法规定有如下

p*q =N
(p-1) * (q-1) = n
e*d ==(1 mod n)
等价如下

e*d -n*k =1

作一系列相除运算,   不记得就是大数当被除数求余就行了

分两种情况

1.最后的k系数不为1

例:令p=47,q=71,求用RSA算法加密的公钥和私钥。
计算如下:
(1)n=pq=47*71=3337;
(2)φ(n)=(p-1)*(q-1)=46*70=3220;
(3)随机选取e=79(满足与3220互质的条件);
(4)则私钥d应该满足:79*d mod 3220 = 1;
那么这个式子(4)如何解呢?这里就要用到欧几里得算法(又称辗转相除法),解法如下:
(a)式子(4)可以表示成79*d-3220*k=1(其中k为正整数);
(b)将3220对79取模得到的余数60代替3220,则变为79*d-60*k=1;
(c)同理,将79对60取模得到的余数19代替79,则变为19*d-60*k=1;
(d)同理,将60对19取模得到的余数3代替60,则变为19*d-3*k=1;
(e)同理,将19对3取模得到的余数1代替19,则变为d-3*k=1;
当d的系数最后化为1时,(注:当k的系数先化为1时,令d=1,再带入)
令k=0,代入(e)式中,得d=1;    (注 d系数先为1时, 此处第1个式子代入 k=0)
将d=1代入(d)式,得k=6;
将k=6代入(c)式,得d=19;
将d=19代入(b)式,得k=25;
将k=25代入(a)式,得d=1019,这个值即我们要求的私钥d的最终值。

2. k系数为1的情况

原式: 20*d mod 2000001 = 1,求d;
用辗转相除法可转换为下列式子:
(1) 20*d – 2000001*k = 1;
(2) 20*d – 1*k = 1;
此时k的系数已经化为1;
令d=1,带入(2)式中,得k=19;    (注:若k的系数为1,则把d=1供入原式,求出k)
令k=19,带入(1)式中,得d=1900001;
解得:d=1900001

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值