Problem: Lets decrypt this: ciphertext? Something seems a bit small
File: THE_FILE
Text:
N: 29331922499794985782735976045591164936683059380558950386560160105740343201513369939006307531165922708949619162698623675349030430859547825708994708321803705309459438099340427770580064400911431856656901982789948285309956111848686906152664473350940486507451771223435835260168971210087470894448460745593956840586530527915802541450092946574694809584880896601317519794442862977471129319781313161842056501715040555964011899589002863730868679527184420789010551475067862907739054966183120621407246398518098981106431219207697870293412176440482900183550467375190239898455201170831410460483829448603477361305838743852756938687673
e: 3
ciphertext (c): 2205316413931134031074603746928247799030155221252519872650082343781881947286623459260358458095368337105247516735006016223547924074432814737081052371203373104854490121754016011241903971190586239974732476290129461147622505210058893325312869
Solution:
ciphertext = plaintext^e mod n
e is small so you can calc the cube root
python:
def find_cubic_root(n):
a = 1
b = n
while b - a > 1:
mid = (a + b) // 2
if mid**3 > n:
b = mid
else:
a = mid
if a ** 3 == n:
return a
elif b ** 3 == n:
return b
else:
return 0
ct = 2205316413931134031074603746928247799030155221252519872650082343781881947286623459260358458095368337105247516735006016223547924074432814737081052371203373104854490121754016011241903971190586239974732476290129461147622505210058893325312869
m = find_cubic_root(ct)
h = hex(m)
print(h)
0x7069636f4354467b6e3333645f615f6c41726733725f655f30613431656635307d
hex to text.
Flag: picoCTF{n33d_a_lArg3r_e_db48b19b}