Đây là bài toán ngược của phép mã hóa Vigenère giữ định dạng gốc: chỉ các ký tự chữ cái (A-Z, a-z) trong bản mã được giải mã, mọi ký tự không phải chữ cái (khoảng trắng, chữ số, dấu câu, ...) được giữ nguyên tại đúng vị trí và không tính vào dòng khóa. Chữ hoa/thường của ký tự đầu ra được giữ nguyên như ký tự đầu vào tại vị trí đó.
Cho bản mã C và khóa K chỉ gồm chữ cái (không phân biệt hoa/thường, quy về chữ in hoa khi tính toán). Gọi b0,b1,… là dãy các ký tự chữ cái của C theo đúng thứ tự xuất hiện. Ký tự chữ cái thứ j được giải mã bằng ký tự khóa Kjmod∣K∣ theo công thức Vigenère chuẩn (trừ theo giá trị không phân biệt hoa thường, rồi trả kết quả về đúng dạng hoa/thường của ký tự gốc trong bản mã). Các ký tự không phải chữ cái được chép nguyên vào đúng vị trí trong chuỗi kết quả.
Ví dụ: C= Lxfopv ef Rnhr!, K= LEMON → bản rõ khôi phục được là Attack at Dawn!.
Dòng 1: chuỗi bản mã C (1≤∣C∣≤2000) — có thể gồm chữ hoa, chữ thường, chữ số, dấu cách, dấu câu (dòng này có thể chứa khoảng trắng). Dòng 2: chuỗi khóa K (1≤∣K∣≤50), chỉ gồm chữ cái (hoa hoặc thường).
Một dòng duy nhất: chuỗi bản rõ khôi phục được, cùng độ dài với C; các ký tự không phải chữ cái được giữ nguyên đúng vị trí; hoa/thường tại mỗi vị trí chữ cái được giữ giống như trong C.
Ví dụ:
Đầu vào:
Lxfopv ef Rnhr!
LEMON
Đầu ra:
Attack at Dawn!
Đầu vào:
a
A
Đầu ra:
a
Đang tải editor...