corCTF 2021 | 4096

#corctf2021

from Crypto.Util.number import getPrime, bytes_to_long
from private import flag

def prod(lst):
    ret = 1
    for num in lst:
        ret *= num
    return ret

m = bytes_to_long(flag)
primes = [getPrime(32) for _ in range(128)]
n = prod(primes)
e = 65537
print(n)
print(pow(m, e, n))

RSA。それもMulti Prime RSA

素数一個が32bitしかないので簡単に素因数分解できる。あとは適当に \phi計算すればおわり