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−1 (mỗi ki tương ứng độ dịch 0-25 theo vị trí chữ cái, A=0,...,Z=25), thì chữ cái bản rõ thứ j (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 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}.
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.
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...