通过这个题算是实际了解了下RSA的破解过程吧。
首先要做的是通过题目给的公钥文件把n,e求出来,利用以下代码:
from Crypto.PublicKey import RSA
pub = RSA.importKey(open('xxx\public.pem').read())
n = long(pub.n)
e = long(pub.e)
print n
print e
得到n以后,由于n=p*q,利用msieve分解n(在sourceforge.net上下载windows版的,就可以直接运行了):
msieve.exe 7420***********************4263
运行之后得到p,q的值,再利用egcd(扩展欧几里得算法)求出d(私钥):
def egcd(a,b):
if b==0:
return a,1,0
else:
g,x,y=egcd(b,a%b)
return g,y,x-a/b*y
再利用python代码:
<