Mã Vigenère khắc phục nhược điểm tần suất cố định của mã Caesar bằng cách sử dụng một từ khóa K (chỉ gồm chữ cái) để tạo dịch chuyển thay đổi theo vị trí. Cho bản rõ S và khóa K (không rỗng). Chỉ số các ký tự là chữ cái trong S được đánh số 0,1,2,… (bỏ qua các ký tự không phải chữ cái). Chữ cái là chữ cái thứ i trong dãy đó được dịch chuyển theo độ dịch của ký tự Kimod∣K∣ (A/a tương ứng độ dịch 0, không phân biệt hoa/thường của K), theo đúng công thức Caesar. Các ký tự không phải chữ cái trong S (số, dấu câu, khoảng trắng...) giữ nguyên vị trí và không làm khóa dịch chuyển bước. Hoa/thường của từng ký tự trong S được giữ nguyên ở kết quả.
Ví dụ kinh điển: K= LEMON, S= ATTACKATDAWN ⇒ kết quả LXFOPVEFRNHR.
Dòng 1: khóa K (chỉ gồm chữ cái A-Z/a-z, độ dài từ 1 đến 50). Dòng 2: chuỗi S (độ dài từ 0 đến 1000 ký tự, có thể chứa khoảng trắng và ký tự không phải chữ cái, có thể rỗng).
Một dòng chứa chuỗi S sau khi mã hóa Vigenère.
Ví dụ:
Đầu vào:
key
Hello, World!
Đầu ra:
Rijvs, Uyvjn!
Đầu vào:
a
ABCXYZ
Đầu ra:
ABCXYZ
Đang tải editor...