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ã Caesar cipher

    Trong các thử thách CTF (Capture The Flag) mảng mật mã học, mã hóa Caesar là kỹ thuật cổ điển đơn giản nhất: mỗi chữ cái in hoa AAA-ZZZ được dịch chuyển vòng tròn kkk vị trí trong bảng chữ cái (262626 chữ cái). Công thức mã hóa cho ký tự có chỉ số ppp (A=0, ..., Z=25): c=(p+k) mod 26c = (p + k) \bmod 26c=(p+k)mod26.

    Bạn thu được một đoạn bản mã (ciphertext) trong một máy chủ CTF và biết trước bước dịch kkk đã dùng để mã hóa. Hãy viết chương trình giải mã để tìm lại flag gốc.

    Quy ước: chỉ các chữ cái in hoa AAA-ZZZ bị dịch chuyển; mọi ký tự khác (số, dấu {, }, _, khoảng trắng, ...) giữ nguyên không đổi và không ảnh hưởng đến việc dịch chuyển.

    Ví dụ: với k=3k=3k=3, bản mã FWI{FDHVDU_FLSKHU} được giải mã thành CTF{CAESAR_CIPHER} (mỗi chữ cái được dịch lùi 3 vị trí, ví dụ F lùi 3 thành C, W lùi 3 thành T).

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

      Dòng 1: số nguyên kkk (0≤k≤250 \le k \le 250≤k≤25) — số bước dịch đã dùng khi mã hóa. Dòng 2: chuỗi bản mã (có thể rỗng), độ dài không quá 200 ký tự, chỉ gồm chữ in hoa A-Z, chữ số, dấu {, }, _ và khoảng trắng.

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

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

    Ví dụ:

    Đầu vào:

    3
    FWI{FDHVDU_FLSKHU}

    Đầu ra:

    CTF{CAESAR_CIPHER}
    

    Đầu vào:

    0
    CTF{ZERO_SHIFT}

    Đầu ra:

    CTF{ZERO_SHIFT}
    

    Đang tải editor...