BUUCTF [b01lers2020]safety_in_numbers
给出了 RSA的标准public key生成
直接用标准库
from Crypto.PublicKey.RSA import *
with open(r'D:\浏览器下载\attachment\safety_in_numbers\pubkey.pem','r+') as f:
key = f.read()
rsa = import_key(key)
print(rsa.n)
print(rsa.e)
得到n很大很大 e=65537
所以直接对c开e次方即可
这里要注意一下小端序的问题
from Crypto.Util.number import *
import gmpy2
e = 65537
with open(r'.\flag.enc','rb') as f:
c = f.read()
c = int.from_bytes(c,byteorder='little')
m = gmpy2.iroot(c,e)[0]
print(long_to_bytes(m))
print(long_to_bytes(m)[::-1])