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 luận khóa Caesar từ một cặp rõ-mã đã biết

    Trong tấn công dựa vào bản rõ đã biết (known-plaintext attack), kẻ tấn công biết được một cặp ký tự bản rõ - bản mã tương ứng tại vị trí đầu tiên của văn bản. Từ đó có thể suy ra khóa dịch kkk của mật mã Caesar bằng công thức:

    k=(c−p) mod 26k = (c - p) \bmod 26k=(c−p)mod26

    trong đó p,cp, cp,c lần lượt là chỉ số (A=0,…,Z=25A=0,\ldots,Z=25A=0,…,Z=25) của ký tự bản rõ và ký tự bản mã tại vị trí đầu tiên. Sau khi tìm được kkk, giải mã toàn bộ bản mã còn lại để khôi phục bản rõ.

    Cho xâu bản mã CCC (chỉ gồm chữ in hoa A-Z) và cặp ký tự (p,c)(p, c)(p,c) là ký tự bản rõ và ký tự bản mã tại vị trí đầu tiên của văn bản (đảm bảo ccc chính là ký tự đầu tiên của CCC), hãy khôi phục toàn bộ bản rõ.

    Ví dụ: C=C = C= "KHOOR", biết ký tự đầu bản rõ là 'H' ứng với ký tự đầu bản mã 'K' ⇒k=(10−7) mod 26=3\Rightarrow k = (10-7) \bmod 26 = 3⇒k=(10−7)mod26=3, bản rõ là "HELLO".

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

      Dòng 1: xâu bản mã CCC chỉ gồm các chữ in hoa A-Z, độ dài từ 111 đến 100010001000. Dòng 2: hai ký tự ppp và ccc cách nhau bởi một khoảng trắng — lần lượt là ký tự bản rõ và ký tự bản mã tại vị trí đầu tiên của văn bản (chữ in hoa A-Z).

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

      In ra một dòng duy nhất là bản rõ đầy đủ (chữ in hoa, cùng độ dài với CCC).

    Ví dụ:

    Đầu vào:

    A
    A A

    Đầu ra:

    A
    

    Đầu vào:

    KHOOR
    H K

    Đầu ra:

    HELLO
    

    Đang tải editor...