Шифр Вижинера относится к многоалфавитным алгоритмам симметричного шифрования. Многоалфавитные шифры не сохраняют частоту символов, что повышает их криптостойкость по сравнению с моноалфавитными алгоритмами. Шифр был создан французским математиком шестнадцатого века Блезом де Вижинером. Отличительной чертой шифра является независимость потока ключа от символов исходного текста.
Криптоанализ включает два этапа: нахождение длины ключа, а затем непосредственно последовательности символов алфавита.
Преимущество многоалфавитных шифров в том, чтоони не только скрывают характеристики языка, но и имеют большие множества ключей. Например, если в качестве ключа используется слово из пяти символов logic, то начальный поток ключей – (11, 14, 06, 08, 02).
Рассмотрим пример реализации алгоритма шифрования Вижинера с помощью таблиц Excel.
На лист в блок С12-AB33 помещаем таблицу Вижинера для латинского алфавита (рис.1). В первой строке размещаются все буквы алфавита от A до Z. Каждая следующая строка получается из предыдущей циклическим сдвигом на символ влево.
Рис.1. Лист Excel-таблицы с данными
В строку 4 с позиции F вводится текст, предназначенный для шифрования. С позиции F5 (под строкой исходного текста) вводятся символы ключа, причем, если ключ оказывается короче сообщения, его используют несколько раз.
Зашифрованный текст отображается в строке 8 с позиции F (под соответствующими буквами исходного сообщения).
Для зашифрования/расшифрования по таблице Вижинера используюся следующие функции Excel категории "Ссылки и массивы":
Функция ИНДЕКС возвращает значение или ссылку на значение из таблицы или диапазона, функция ИНДЕКС имеет две синтаксические формы: ссылка (возвратить ссылку на указанную ячейку) и массив (возвратить значение указанной ячейки или массива ячеек); используем вариант ссылки на ячейку;
Функция ПОИСКПОЗ - возвращает относительную позицию в массиве элемента, соответствующего указанному значению с учетом указанного порядка, функцией ПОИСКПОЗ удобно пользоваться вместо одной из функций ПРОСМОТР, когда требуется найти позицию элемента в диапазоне, а не сам элемент.
Пример работы алгоритма представлен рисунком 2, в качестве ключа использовано слово IMPERATOR.
Рис.2. Пример шифрования текста
Каждый символ зашифрованного текста вычисляется по следующей формуле: =ИНДЕКС($C$12:$AB$33;ПОИСКПОЗ(F5;$B$12:$B$37;0);ПОИСКПОЗ(F4;$C$11:$AB$11;0))
Таким образом, функционал электронных таблиц позволяют построить простейший калькулятор, иллюстрирующий работу алгоритма шифрования Вижинера.