Mã Affine là dạng tổng quát hóa của mã Caesar: mỗi chữ cái bản rõ (chỉ số p, A=0,...,Z=25) được mã hóa bằng công thức c=(a⋅p+b)mod26, với khóa gồm hai số nguyên (a,b), 0≤b≤25 và a phải nguyên tố cùng nhau với 26 (tức gcd(a,26)=1) để phép mã hóa khả nghịch. Có đúng 12 giá trị a hợp lệ trong khoảng [1,25]: {1,3,5,7,9,11,15,17,19,21,23,25}.
Công thức giải mã: p=a−1(c−b)mod26, trong đó a−1 là nghịch đảo modulo 26 của a.
Bạn thu được một bản mã Affine nhưng không biết cặp khóa (a,b) đã dùng. Biết rằng flag gốc luôn bắt đầu bằng CTF{ và kết thúc bằng }. Vì chỉ có 12×26=312 khả năng khóa, hãy vét cạn (brute-force) toàn bộ để tìm ra cặp khóa đúng và khôi phục flag. Ký tự không phải chữ in hoa A-Z (số, {, }, _, khoảng trắng) giữ nguyên qua cả mã hóa lẫn giải mã.
Ví dụ: với bản mã LKU{F}, cặp khóa đúng là (a,b)=(3,5) và flag giải mã được là CTF{A}.
Một dòng duy nhất: chuỗi bản mã, gồm chữ in hoa A-Z, chữ số, dấu {, }, _ và khoảng trắng.
In ra một dòng duy nhất là flag đã giải mã được (dạng CTF{...}).
Ví dụ:
Đầu vào:
SZH{IHHWVC_SWFRCP}Đầu ra:
CTF{AFFINE_CIPHER}
Đầu vào:
RGM{DMMHQF_KDZHRZ}Đầu ra:
CTF{AFFINE_BASICS}
Đang tải editor...