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) #e模f_n的逆为d, (e*d)%f_n==1
print(d)
大佬写的更详细
https://zhuanlan.zhihu.com/p/76006823
神话是一群人的梦想,梦想是一个人的神话

浙公网安备 33010602011771号