得到的附件为如图:
.pem为存放密钥的文件,.enc为加密文件
使用
openssl rsa -text -modulus -pubin -in pubkey.pem
得到n后使用factordb
分解得到p和q.
在进行正常的RSA操作。
并利用crypto库中的构造输出密钥的方法,输出对应的privatekey.pem
实现过程的脚本 如下:
import gmpy2
from Crypto.PublicKey import RSA
p=gmpy2.mpz(275127860351348928173285174381581152299)
q=gmpy2.mpz(319576316814478949870590164193048041239)
n=gmpy2.mpz(87924348264132406875276140514499937145050893665602592992418171647042491658461)
e=65537
fai=(p-1)*(q-1)
print(p*q)
d=gmpy2.invert(e,fai)
print(d)
p=275127860351348928173285174381581152299
q=319576316814478949870590164193048041239
fai=(p-1)*(q-1)
n=87924348264132406875276140514499937145050893665602592992418171647042491658461
d=10866948760844599168252082612378495977388271279679231539839049698621994994673
privatekey=RSA.construct((n,e,d,p,q))
Key=privatekey.export_key()
with open('prikey.pem','wb') as fp:
fp.write(Key)
得到解密密钥后,再一次使用openssl库,进行解密。
使用命令
openssl reautl -decrypt -in flag.enc -inkey -private.key
得到明文flag.
使用RSATools可以更快解决,以后会继续研究RSATools的基本方法。