В шифре Цезаря каждая буква алфавита сдвигается на несколько позиций; например в шифре Цезаря при сдвиге +3, A стало бы D, B стало бы E и так далее. Шифр Виженера состоит из последовательности нескольких шифров Цезаря с различными значениями сдвига.
Wiki: https://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher
Шифрование шифром Виженера работает следующим образом. Возьмем латинский алфавит, в котором 26 букв, текст, который требуется зашифровать и ключ:
attackatdown
lemonlemonle
Позиция буквы a в алфавите 0, а позиция l - 11. Тогда символ в
зашифрованном тексте будет вычисляться как (0 + 11) % 26 что равно
11, т.е. символу l. Второму символу текста t соответствует символ
e из ключа, результатом для них будет (19 + 4) % 26 = 23, что
соответствует символу x.
Расшифровка происходит подобным образом: c - n + m, где c - код
символа из зашифрованного текста, n - размер алфавита, m - код
символа из ключа.
В модуле vigenere_cipher.py приведен пример реализации такого шифра.