RSA解密

一、遇到一道RSA解密的题,题目如下

  在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17 求解出d作为flag提交

二、以前没做过RSA解密的题,现在了解一下RSA的基本原理

  公钥和私钥的产生

1、在加密之前找到两个大质数p,q

2、计算n=p*q

3、根据欧拉函数,求得φ(n)=φ(p)φ(q)=(p-1)(q-1)

4、找出一个公钥e,e要满足: 1<e<φ(n) 的整数,且使e和φ(N)互质

5、根据e*d除以φ(n)余数为1,找到私钥d

6、所以,公钥就是(n,e) 私钥就是(n,d)

 

根据题目,python如下

import libnum
p = 473398607161
q = 4511491
e = 17
n = p*q
f_n = (p-1)*(q-1)
d = libnum.invmod(e,f_n) #ef_n的逆为d, (e*d)%f_n==1
print(d)

大佬写的更详细
https://zhuanlan.zhihu.com/p/76006823
posted @ 2020-03-22 17:05  忆梦昔  阅读(1031)  评论(0)    收藏  举报