RSA★★★
Really Secure Algorithm!
n = 16547070520914666367481944159053275529434584410142411
e = 65537
c = 13179845332334938411787150462748287916268892414709429
답은 plain message의 hex representation을 ascii로 인코딩 한 값.
n, e, c값을 주었다. 일단, n을 통해서 p와 q값을 구해보면 173, 95647806479275528135733781266203904794419563064407가 나오게 된다. 그렇게 p와 q를 이용하면 d값이 10183580522135815425951707624793108040776999367017921가 나오므로 c ^ d % n 을 하게되면 평문을 구할 수 있다.
n = 16547070520914666367481944159053275529434584410142411
c = 13179845332334938411787150462748287916268892414709429
d = 0x1b37e377e766547d6f62cb180328d6d345db261705c1
def modpow(x, y, z):
number = 1
while y:
if y & 1:
number = number * x % z
y >>= 1
x = x * x % z
return number
plain = modpow(c, d, n)
print hex(plain)[2:-1].decode('hex')