Тулыио ЦЕЛЗИО ТСДИЗЛО

Если первая буква алфавита имеет код 0, вторая — код 1 и т.д., алгоритм шифрования может быть выражен формулой

у = (x + k) mod n,

где x — код исходного символа,

k — величина сдвига,

у — код символа-замены,

n — количество символов в алфавите,

а запись (x + k) mod n обозначает остаток от деления x + k на n.

Операция взятия остатка от деления необходима для того, чтобы "замкнуть" алфавит в кольцо.

Например, при использовании русского алфавита (32 буквы, будем считать, что буквы Е и Ё совпадают.) для буквы "Я" (код 31) получаем код заменяющего символа (31 + 3) mod 32 = 2, это буква "В".

Ключом для шифра Цезаря служит сдвиг k; если его знать, то сообщение легко расшифровать. Для этого используется формула

х = (y - k + n) mod n.

Шифр Цезаря относится к шифрам простой подстановки, так как каждый символ исходного сообщения заменяется на другой символ из того же алфавита. Такие шифры легко раскрываются с помощью частотного анализа, потому что в каждом языке частоты встречаемости букв примерно постоянны для любого достаточно большого текста.

 

Значительно сложнее сломать шифр Виженера (назван по имени Блеза Виженера, швейцарского дипломата XVI века.), который стал естественным развитием шифра Цезаря.

Для использования шифра Виженера используется ключевое слово, которое задает переменную величину сдвига. Например, пусть ключевое слово — "ЗАБЕГ". По таблице определяем коды букв:

Получаем: "З" - 7, "А" - 0, "Б" - 1, "Е" - 5, "Г" - 3. Это значит, что для кодирования первой буквы используется сдвиг 7, для кодирования второй — 0 (символ не меняется) и т.д. Для пятой буквы используется сдвиг 3, а для шестой — снова 7 (начали "проходить" кодовое слово сначала). Фраза "ПРИШЕЛ УВИДЕЛ ПОБЕДИЛ" при использовании шифра Виженера с ключом "ЗАБЕГ" будет закодирована в виде "ЦРЙЭИТ ФЗЛЛЕМ ТХБЖЙЛТ".

Шифр Виженера обладает значительно более высокой криптостойкостью, чем шифр Цезаря. Это значит, что его труднее раскрыть — подобрать нужное ключевое слово. Теоретически, если длина ключа равна длине сообщения и каждый ключ используется только один раз, шифр Виженера взломать невозможно.