Writeup Aria
01_General01_Encoding

Bytes and Big Integers

Desc

Sistem kriptografi seperti RSA bekerja dengan operasi matematika pada bilangan besar, sementara pesan manusia biasanya berbentuk teks. Karena itu, pesan perlu dikonversi menjadi angka sebelum bisa diproses oleh algoritma kriptografi.

Cara umumnya adalah mengubah teks menjadi bytes, membaca bytes tersebut sebagai hex, lalu menginterpretasikannya sebagai integer besar. Proses sebaliknya bisa mengubah integer besar kembali menjadi bytes dan teks.

Sebagai ilustrasi:

pesan: HELLO
byte ASCII: [72, 69, 76, 76, 79]
byte heksadesimal: [0x48, 0x45, 0x4c, 0x4c, 0x4f]
basis-16: 0x48454c4c4f
basis-10: 310400273487

Library PyCryptodome menyediakan bytes_to_long() untuk mengubah bytes menjadi integer dan long_to_bytes() untuk mengubah integer kembali menjadi bytes.

Pada challenge ini, kita diberi integer besar dan diminta mengubahnya kembali menjadi pesan.

11515195063862318899931685488813747395775516287289682636499965282714637259206269

Solution

With Python
from Crypto.Util.number import long_to_bytes

n = 11515195063862318899931685488813747395775516287289682636499965282714637259206269
print(long_to_bytes(n).decode())
# crypto{3nc0d1n6_4ll_7h3_w4y_d0wn}

long_to_bytes(n) membaca integer besar sebagai representasi bytes. Karena bytes tersebut sebenarnya berisi teks flag, .decode() dipakai untuk mengubahnya menjadi string.

With CyberChef

Buka CyberChef.

Gunakan recipe berikut:

  • Text-Integer Conversion('String')

Atau gunakan:

Summary

Challenge ini menunjukkan cara teks direpresentasikan sebagai bilangan besar. Konsep ini penting di kriptografi modern, terutama RSA, karena enkripsi dan dekripsi bekerja pada integer. Di Python, long_to_bytes() dipakai untuk decode integer besar kembali menjadi bytes.

Flag

crypto{3nc0d1n6_4ll_7h3_w4y_d0wn}

On this page