---
# System prepended metadata

title: '[2021 LineCTF] crypto - babycrypto3'

---

# [2021 LineCTF] crypto - babycrypto3

문제에서 ciphertext.txt와 public key가 주어진다. public key에는 N, e 값이 들어있기 때문에, pycryptodome의 importKey로 값을 빼와보면 N값이 꽤 작은것을 볼 수 있다. factordb에 돌려 간단히 소인수분해 할 수 있고, decrypt 하면되는 쉬운 문제이다.
```python=
from Crypto.PublicKey import RSA
from Crypto.Util.number import *

f = open('pub.pem', 'r')
key = RSA.importKey(f.read())
f.close()

f = open('ciphertext.txt', 'rb')
ct = bytes_to_long(f.read())
N = 31864103015143373750025799158312253992115354944560440908105912458749205531455987590931871433911971516176954193675507337
p = 291664785919250248097148750343149685985101
q = 109249057662947381148470526527596255527988598887891132224092529799478353198637
e = 65537
phi = (p - 1) * (q - 1)
d = pow(e, -1, phi)
print(long_to_bytes(pow(ct, d, N)))
```