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] Mã hóa Playfair

    Mật mã Playfair mã hóa theo từng cặp chữ cái (digraph) dựa trên bảng 5×55\times55×5 xây dựng từ từ khóa. Xây bảng: viết từ khóa (bỏ ký tự lặp, coi J như I), rồi nối tiếp các chữ cái còn lại của bảng chữ cái theo thứ tự A→Z (bỏ qua J), điền vào bảng 5×55\times55×5 theo hàng.

    Chuẩn bị bản rõ: coi J như I, chỉ giữ chữ cái; duyệt trái sang phải ghép thành các cặp: nếu hai ký tự liên tiếp giống nhau thì chèn X ngay sau ký tự đầu (không ghép chúng với nhau); nếu còn dư đúng 1 ký tự ở cuối thì thêm X cho đủ cặp.

    Mã hóa từng cặp (x,y)(x,y)(x,y) theo vị trí hàng/cột trong bảng:

    • Cùng hàng: mỗi ký tự được thay bằng ký tự liền bên phải trong hàng đó (vòng lại đầu hàng nếu ở cột cuối).
    • Cùng cột: mỗi ký tự được thay bằng ký tự liền bên dưới trong cột đó (vòng lại đầu cột nếu ở hàng cuối).
    • Khác cả hàng và 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.

    Cho từ khóa và bản rõ, hãy mã hóa theo Playfair.

    Ví dụ: từ khóa SECURITY cho bảng bắt đầu bằng hàng S E C U R, tiếp I T Y A B,... Với bản rõ MATHEMATICS (ghép cặp: MA TH EM AT IC SX), mã hóa cho kết quả OTAFTVBYYSUQ.

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

      Dòng 1: từ khóa (xâu chữ cái A-Z, độ dài từ 1 đến 50, có thể có ký tự lặp). Dòng 2: bản rõ (xâu chữ cái A-Z, không dấu cách, độ dài từ 1 đến 10410^4104).

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

      Một dòng duy nhất là bản mã (chữ in hoa A-Z), độ dài chẵn.

    Ví dụ:

    Đầu vào:

    SECURITY
    MATHEMATICS

    Đầu ra:

    OTAFTVBYYSUQ
    

    Đầu vào:

    CIPHER
    HELLOWORLD

    Đầu ra:

    ECSPGSVQBGBY
    

    Đang tải editor...