題目鏈接
https://buuoj.cn/challenges#rsa
題解(略)
百度有很多博客可以參考。
用010editor打開pub.key文件查看公鑰
直接掛兩個工具鏈接:
由公鑰文件得到n,e
然后要將模數n改成10進制的,腳本如下
hex = "C0332C5C64AE47182F6C1C876D42336910545A58F7EEFEFC0BCAAF5AF341CCDD"
print(int(hex,16))
python的問題
然后寫腳本,很詭異,我的Python2安裝了rsa,也安裝了pycrypto,也安裝了Crypto,在site-packages文件夾下都有,但跑腳本就是報錯。而gmpy2我也只有Python2安裝了,隨后我發現Python3的rsa可以用,於是寫了倆腳本,分開跑。
Python2的:
import gmpy2
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463
n = 86934482296048119190666062003494800588905656017203025617216654058378322103517
e = 65537
phin= (p-1)*(q-1)
d = gmpy2.invert(e,phin)
print(d)
將得到的d代入下面Python3的代碼里:
import rsa
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463
n = 86934482296048119190666062003494800588905656017203025617216654058378322103517
e = 65537
d= int("81176168860169991027846870170527607562179635470395365333547868786951080991441")
key = rsa.PrivateKey(n,e,int(d),p,q)
c = open('d:\\我不做人啦\\今天你做題了嗎\\output\\flag.enc','rb')
c = c.read()
print(rsa.decrypt(c,key))