Giả sử biết một hệ mã Affine E(x)=(ax+b)mod26 (với gcd(a,26)=1) đã biến đổi hai chữ cái bản rõ p1,p2 thành hai chữ cái bản mã c1,c2 tương ứng (đây là kiểu tấn công known-plaintext). Hãy tìm lại khóa (a,b) rồi dùng khóa đó để giải mã toàn bộ một xâu bản mã cho trước.
Có thể tồn tại nhiều cặp (a,b) hợp lệ thỏa mãn cả hai phương trình c1=(a⋅p1+b)mod26 và c2=(a⋅p2+b)mod26 (với a∈{1,…,25},gcd(a,26)=1); trong trường hợp đó chọn cặp có a nhỏ nhất, nếu vẫn còn nhiều cặp thì chọn b nhỏ nhất. Nếu không tồn tại cặp (a,b) nào thỏa mãn, in ra IMPOSSIBLE.
Ví dụ: biết H→R và E→C (tương ứng a=5,b=8), giải mã bản mã RCLLA cho ra HELLO.
Dòng 1: hai ký tự p1 và c1 cách nhau bởi dấu cách (chữ in hoa A-Z). Dòng 2: hai ký tự p2 và c2 cách nhau bởi dấu cách (chữ in hoa A-Z), với p1=p2. Dòng 3: xâu bản mã cần giải (chỉ gồm chữ in hoa A-Z và dấu cách), độ dài từ 0 đến 200 ký tự (có thể rỗng).
In ra một dòng: bản rõ giải mã được theo khóa (a,b) tìm được (giữ nguyên vị trí dấu cách); hoặc IMPOSSIBLE nếu không tồn tại khóa Affine hợp lệ nào thỏa hai cặp rõ-mã đã cho.
Ví dụ:
Đầu vào:
H R
E C
RCLLA
Đầu ra:
HELLO
Đầu vào:
A A
A B
ABC
Đầu ra:
IMPOSSIBLE
Đang tải editor...