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 Vigenère cơ bản

    Mật mã Vigenère là mở rộng của mật mã Caesar, dùng một từ khóa lặp lại tuần hoàn để dịch chuyển từng ký tự của bản rõ.

    Cho bản rõ PPP chỉ gồm các chữ cái in hoa từ A đến Z (không có khoảng trắng) và khóa KKK cũng chỉ gồm chữ in hoa. Đánh số các chữ cái A=0, B=1, ..., Z=25. Với ký tự thứ iii của PPP (đánh số từ 0), ký tự khóa tương ứng là Ki mod ∣K∣K_{i \bmod |K|}Kimod∣K∣​ (khóa được lặp lại tuần hoàn cho đến hết bản rõ). Ký tự mã hóa được tính theo công thức:

    Ci=(Pi+Ki mod ∣K∣) mod 26C_i = (P_i + K_{i \bmod |K|}) \bmod 26Ci​=(Pi​+Kimod∣K∣​)mod26

    Hãy in ra bản mã CCC.

    Ví dụ: với P=P=P= HELLOWORLD và K=K=K= KEY, ta lặp khóa thành KEYKEYKEYK rồi cộng từng vị trí theo công thức trên, kết quả là RIJVSUYVJN.

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

      Dòng 1: chuỗi bản rõ PPP (1≤∣P∣≤1051 \le |P| \le 10^51≤∣P∣≤105), chỉ gồm chữ in hoa A-Z. Dòng 2: chuỗi khóa KKK (1≤∣K∣≤1001 \le |K| \le 1001≤∣K∣≤100), chỉ gồm chữ in hoa A-Z.

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

      Một dòng duy nhất: chuỗi bản mã, chỉ gồm chữ in hoa A-Z, có cùng độ dài với PPP.

    Ví dụ:

    Đầu vào:

    A
    A
    

    Đầu ra:

    A
    

    Đầu vào:

    HELLOWORLD
    KEY
    

    Đầu ra:

    RIJVSUYVJN
    

    Đang tải editor...