В случае моноалфавитных подстановок используется только один алфавит шифрования. Существуют шифры, где используется целый набор алфавитов шифрования. Такие шифры называются полиалфавитными и позволяют, в отличие от моноалфавитных подстановок, скрыть естественную частоту появления символов в тексте.
Простая полиалфавитная подстановка ( или шифр Вижинера ) последовательно и циклически меняет используемые алфавиты шифрования. Число используемых алфавитов называется периодом шифра. Для шифрования используется ключ - слово или бессмысленный набор символов нормативного алфавита. Каждая буква ключа определяет свой алфавит шифрования, который получается из нормативного циклическим сдвигом на количество символов, равное числовому эквиваленту буквы ключа. Очевидно, что длина ключа равна периоду шифра.
Чтобы зашифровать сообщение шифром Вижинера, поступают следующим образом. Под каждой буквой открытого текста помещается буква ключа. Ключ циклически повторяется необходимое число раз. Чтобы вычислить числовой эквивалент буквы шифртекста, числовой эквивалент буквы ключа складывается по модулю L с числовым эквивалентом буквы открытого текста, где L - мощность нормативного алфавита. Т.е. шифр Вижинера описывается следующим выражением :
где:
Буквы ключа определяют величину смещения символов криптограммы относительно символов открытого текста.
Зашифруем, например, текст "полиалфавитная_подстановка" ключом "краб". Будем использовать алфавит, приведенный в таблице 1.2. Процесс шифрования приведен в таблице 2.1.
П | 15 | К | 10 | (15+10) mod 32 | 25 | Щ |
О | 14 | Р | 16 | (14+16) mod 32 | 30 | Я |
Л | 11 | А | 0 | (11+0) mod 32 | 11 | Л |
И | 8 | Б | 1 | (8+1) mod 32 | 9 | Й |
А | 0 | К | 10 | (0+10) mod 32 | 10 | К |
Л | 11 | Р | 16 | (11+16) mod 32 | 27 | Ь |
Ф | 20 | А | 0 | (20+0) mod 32 | 20 | Ф |
А | 0 | Б | 1 | (0+1) mod 32 | 1 | Б |
В | 2 | К | 10 | (2+10) mod 32 | 12 | М |
И | 8 | Р | 16 | (8+16) mod 32 | 24 | Ш |
Т | 18 | А | 0 | (18+0) mod 32 | 18 | Т |
Н | 13 | Б | 1 | (13+1) mod 32 | 14 | О |
А | 0 | К | 10 | (0+10) mod 32 | 10 | К |
Я | 30 | Р | 16 | (30+16) mod 32 | 14 | О |
_ | 31 | А | 0 | (31+0) mod 32 | 31 | _ |
П | 15 | Б | 1 | (15+1) mod 32 | 16 | Р |
О | 14 | К | 10 | (14+10) mod 32 | 24 | Ш |
Д | 4 | Р | 16 | (4+16) mod 32 | 20 | Ф |
С | 17 | А | 0 | (17+0) mod 32 | 17 | С |
Т | 18 | Б | 1 | (18+1) mod 32 | 19 | У |
А | 0 | К | 10 | (0+10) mod 32 | 10 | К |
Н | 13 | Р | 16 | (13+16) mod 32 | 29 | Ю |
О | 14 | А | 0 | (14+0) mod 32 | 14 | О |
В | 2 | Б | 1 | (2+1) mod 32 | 3 | Г |
К | 10 | К | 10 | (10+10) mod 32 | 20 | Ф |
А | 0 | Р | 16 | (0+16) mod 32 | 16 | Р |
В результате получилась криптограмма : "ЩЯЛЙКЬФБМШТОКО_Р ШФСУКЮОГФР".
Описанный в работе 1 шифр Цезаря является частным случаем шифра Вижинера с периодом, равным единице.