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] Giải mã Playfair

    Cho mật mã Playfair (xây bảng 5×55\times55×5 từ từ khóa theo đúng quy tắc: bỏ ký tự lặp trong từ khóa, coi J như I, rồi điền tiếp các chữ cái còn thiếu theo thứ tự A→Z, bỏ qua J) và một bản mã có độ dài chẵn được tạo đúng theo quy tắc mã hóa Playfair (mã hóa từng cặp: cùng hàng → dịch phải; cùng cột → dịch xuống; khác hàng khác cột → đổi chéo cột). Hãy giải mã để khôi phục bản rõ. Lưu ý: in nguyên kết quả giải mã từng cặp, không cần loại bỏ các ký tự X đệm hay chèn thêm trong quá trình mã hóa gốc.

    Quy tắc giải mã từng cặp (x,y)(x,y)(x,y) (đảo ngược quy tắc mã hóa):

    • Cùng hàng: thay mỗi ký tự bằng ký tự liền bên trái (vòng lại cuối hàng nếu ở cột đầu).
    • Cùng cột: thay mỗi ký tự bằng ký tự liền bên trên (vòng lại cuối cột nếu ở hàng đầu).
    • Khác hàng khác cột: thay xxx bằng ký tự cùng hàng xxx, cùng cột yyy; thay yyy bằng ký tự cùng hàng yyy, cùng cột xxx (giống hệt quy tắc mã hóa).

    Ví dụ: từ khóa CIPHER, bản mã ECSPGSVQBGBY. Giải mã cho ra HELXLOWORLDX (chính là bản rõ HELLOWORLD sau khi Playfair chèn X giữa cặp LL trùng nhau lúc mã hóa).

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

      Dòng 1: từ khóa (chữ in hoa A-Z, độ dài từ 1 đến 50, có thể lặp ký tự). Dòng 2: bản mã (chữ in hoa A-Z, độ dài chẵn, từ 2 đến 10410^4104).

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

      Một dòng duy nhất là kết quả giải mã từng cặp (chữ in hoa A-Z), cùng độ dài với bản mã.

    Ví dụ:

    Đầu vào:

    SECURITY
    OTAFTVBYYSUQ

    Đầu ra:

    MATHEMATICSX
    

    Đầu vào:

    CIPHER
    ECSPGSVQBGBY

    Đầu ra:

    HELXLOWORLDX
    

    Đang tải editor...