Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [An toàn thông tin] Suy khóa Affine từ cặp rõ-mã đã biết

    Giả sử biết một hệ mã Affine E(x)=(ax+b) mod 26E(x)=(ax+b)\bmod26E(x)=(ax+b)mod26 (với gcd⁡(a,26)=1\gcd(a,26)=1gcd(a,26)=1) đã biến đổi hai chữ cái bản rõ p1,p2p_1, p_2p1​,p2​ thành hai chữ cái bản mã c1,c2c_1, c_2c1​,c2​ tương ứng (đây là kiểu tấn công known-plaintext). Hãy tìm lại khóa (a,b)(a,b)(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)(a,b)(a,b) hợp lệ thỏa mãn cả hai phương trình c1=(a⋅p1+b) mod 26c_1=(a\cdot p_1+b)\bmod26c1​=(a⋅p1​+b)mod26 và c2=(a⋅p2+b) mod 26c_2=(a\cdot p_2+b)\bmod26c2​=(a⋅p2​+b)mod26 (với a∈{1,…,25},gcd⁡(a,26)=1a \in \{1,\dots,25\}, \gcd(a,26)=1a∈{1,…,25},gcd(a,26)=1); trong trường hợp đó chọn cặp có aaa nhỏ nhất, nếu vẫn còn nhiều cặp thì chọn bbb nhỏ nhất. Nếu không tồn tại cặp (a,b)(a,b)(a,b) nào thỏa mãn, in ra IMPOSSIBLE.

    Ví dụ: biết H→RH \to RH→R và E→CE \to CE→C (tương ứng a=5,b=8a=5,b=8a=5,b=8), giải mã bản mã RCLLA cho ra HELLO.

    • Định dạng đầu vào:

      Dòng 1: hai ký tự p1p_1p1​ và c1c_1c1​ cách nhau bởi dấu cách (chữ in hoa A-Z). Dòng 2: hai ký tự p2p_2p2​ và c2c_2c2​ cách nhau bởi dấu cách (chữ in hoa A-Z), với p1≠p2p_1 \ne p_2p1​=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ừ 000 đến 200200200 ký tự (có thể rỗng).

    • Định dạng đầu ra:

      In ra một dòng: bản rõ giải mã được theo khóa (a,b)(a,b)(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...