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 XOR với khóa lặp

    Phép XOR (⊕\oplus⊕) là phép toán nền tảng trong nhiều hệ mã hiện đại (one-time pad, stream cipher...). Cho bản rõ PPP và khóa KKK (KKK không rỗng). Mã hóa từng byte của PPP (theo mã UTF-8) bằng phép XOR với byte tương ứng của khóa, khóa được lặp lại tuần hoàn khi ngắn hơn bản rõ: nếu PPP có các byte P0,P1,…,Pn−1P_0, P_1, \dots, P_{n-1}P0​,P1​,…,Pn−1​ và KKK có các byte K0,…,Kl−1K_0,\dots,K_{l-1}K0​,…,Kl−1​ thì byte thứ iii của bản mã là Ci=Pi⊕Ki mod l.C_i = P_i \oplus K_{i \bmod l}.Ci​=Pi​⊕Kimodl​. In bản mã dưới dạng chuỗi hex chữ thường, mỗi byte biểu diễn bằng đúng 2 ký tự hex, nối liền không có dấu phân cách.

    Ví dụ: P=P=P= AB, K=K=K= K (mã ASCII: A=0x41, B=0x42, K=0x4B). 0x41⊕0x4B=0x0A0x41 \oplus 0x4B = 0x0A0x41⊕0x4B=0x0A, 0x42⊕0x4B=0x090x42 \oplus 0x4B = 0x090x42⊕0x4B=0x09, nên kết quả là 0a09.

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

      Dòng 1: chuỗi PPP (có thể chứa khoảng trắng, có thể rỗng, đọc đến hết dòng). Dòng 2: chuỗi khóa KKK (không rỗng, không chứa khoảng trắng).

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

      Một dòng chứa chuỗi hex chữ thường của bản mã (chuỗi rỗng nếu PPP rỗng).

    Ví dụ:

    Đầu vào:

    
    K

    Đầu ra:

    Đầu vào:

    AB
    K

    Đầu ra:

    0a09

    Đang tải editor...