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ã Vigenère (biết khóa)

    Mã Vigenère là mã thay thế đa bảng (polyalphabetic substitution): thay vì dùng một độ dịch cố định như Caesar, mỗi chữ cái của bản rõ được dịch theo một độ dịch lấy tuần hoàn từ một từ khóa gồm các chữ in hoa. Nếu khóa là K=k0k1…km−1K = k_0 k_1 \ldots k_{m-1}K=k0​k1​…km−1​ (mỗi kik_iki​ tương ứng độ dịch 000-252525 theo vị trí chữ cái, A=0,...,Z=25), thì chữ cái bản rõ thứ jjj (chỉ tính trong số các chữ cái A-Z, bỏ qua ký tự khác) được mã hóa bằng độ dịch kj mod mk_{j \bmod m}kjmodm​.

    Cho bản mã và từ khóa (toàn chữ in hoa), hãy giải mã để tìm lại bản rõ. Các ký tự không phải chữ in hoa A-Z (số, dấu {, }, _, khoảng trắng) giữ nguyên vị trí và không làm khóa dịch chuyển sang ký tự tiếp theo (bộ đếm khóa chỉ tăng khi gặp chữ cái A-Z).

    Ví dụ: với khóa NEU, bản mã PXZ{UIFYS_QBVFQ} được giải mã thành CTF{HELLO_WORLD}.

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

      Dòng 1: từ khóa (chuỗi chữ in hoa A-Z, độ dài từ 1 đến 20). Dòng 2: bản mã (có thể rỗng), gồm chữ in hoa A-Z, chữ số, dấu {, }, _, khoảng trắng.

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

      In ra một dòng duy nhất là bản rõ sau khi giải mã.

    Ví dụ:

    Đầu vào:

    A
    CTF{SINGLE_LETTER_KEY}

    Đầu ra:

    CTF{SINGLE_LETTER_KEY}
    

    Đầu vào:

    KEY
    MXD{FMEORCBI_ZKWGM}

    Đầu ra:

    CTF{VIGENERE_BASIC}
    

    Đang tải editor...