warmup

crypto aja wkwk

chall.py
from Crypto.PublicKey import RSA
from Crypto.Util.number import *
from flag import FLAG
from math import gcd

key = RSA.generate(2048)
p = key.p
q = key.q
n = key.n
e = key.e
phi = (p - 1) * (q - 1)

_ = q * (n - (p + q) + 1)

pt = bytes_to_long(FLAG)
c = pow(pt, e, n)

with open("output.txt", "w") as f:
    f.write(f"c={c}\n")
    f.write(f"n={n}\n")
    f.write(f"_={_}\n")

we were given the c n and _

we can get the q from the _ by

n - p - q + 1 p * q - p - q + 1 (p * q - p) - (q - 1) p(q - 1) -1(q - 1) (q - 1)(p - 1) _ = q * phi(n)

phi(n) = pq - p - q + 1 n - p - q + 1 n - n/q - q + 1

q (n - n/q - q + 1) qn - n - q^2 + q = _ q^2 -qn -q + n - _ = 0 q^2 -(n + 1)q + (n - _) = 0 aq^2 + bq + c = 0 q = (n + 1)/2 +- akar((n+1)^2 - 4 * 1 * (n - _))/2 D = (n - 1)^2 + 4 * _ q = ((n + 1) - sqrt(D)) / 2 p = n/q

Last updated