这道题目考察了对RSA非对称加密算法的理解,算法的原理及流程可以看RSA介绍这篇博客。
目前p, q, e都是已知的,根据算法原理我们可以知道要求的d与e满足,而
也可以计算出来。所以我们可以通过求e模
的乘法逆元得到d的值。
这里我用到了一个python的库gmpy2来求解d,gmpy2的安装比较简单,直接在Anaconda Navigator的环境中搜索gmpy2安装即可,见下图:
安装好gmpy2之后,就可以利用该库求解d的值了,我的python代码如下:
import gmpy2
p = 473398607161
q = 4511491
e = 17
phin = (p - 1) * (q - 1)
d = gmpy2.invert(e, phin)
print(d)
解出d之后就可以提交FLAG了。