附件
给了n,c,e,直接上RsaCtfTool试试,结果跑不出来,果然没那么简单,那就分解一下n,没想到n可以分解!!(大素数分解网站)
拿到p,q,试试p,q,e,c,结果还是出不来。。看一下报错
简单理解就是d算不出来,检查了一下发现e和phi不互素,有最大公约数2,这样解出来的m就是m^2,于是将e//2,m取平方根就可解出来了。
n = p*q
phi = (p-1)*(q-1)
e = e//2
d = gp.invert(e,phi)
m = pow(c,d,n)
##print(m)
mm=gp.iroot(m,2)[0]
print(bytes.fromhex(hex(mm)[2:]))
结果如下:
成功拿到flag!!!