Каталог@Mail.ru - каталог ресурсов интернет HitMeter - счетчик посетителей сайта, бесплатная статистика

Шифрование методом Плейфера. Полиграммные шифры

Другие шифры На главную Хеш-функции

Описание шифра Плейфера

1. Шифр Плейфера: алгоритм и примеры

Пусть у нас есть некий алфавит и какое-то ключевое слово, а также заданы размеры будущей таблицы. Составляем таблицу следующим образом. Сначала выписываем построчно буквы ключевого слова. С одним "но": если текущая буква уже попала в таблицу, второй раз её не заносим. Потом по порядку дописываем буквы алфавита, пропуская те, что были в ключевом слове.
Допустим, наш алфавит состоит из 25 английских букв, кроме J. Ключевое слово - DEVELOPER. Тогда выходит вот что:
DEVLO
PRABC
FGHIK
MNQST
UWXYZ

Буквы D, E, V смело пишем - их точно ещё не было в таблице. Четвёртая буква слова DEVELOPER уже была - не пишем и т.д. Поскольку E встречается трижды, слово DEVELOPER "даст" только 7 заполненных клеток таблицы. Теперь алфавит. A, B, C ещё не попадались = их нет в ключевом слове, в отличие от D. Потому D не пишем - она уже есть в таблице.
Теперь возникает вопрос, как шифровать и расшифровывать. Используются биграммы - сочетания из двух букв. Пусть s1, c1 - строка и столбец первой буквы, s2, c2 - второй. Пусть S - число строк таблицы, C - столбцов.

1. Если s1 = s2, то позиции букв шифрованной комбинации вычисляются так: для первой (s1, (c1 + 1) mod C), для второй (s2, (c2 + 1) mod C), где (x, y) означает, что буква находится в столбце y строки x. Нумерация строк и столбцов ведётся с нуля, строк - сверху вниз, столбцов - слева направо.

2. Если c1 = c2, то для первой ((s1 + 1) mod S, c1), для второй ((s2 + 1) mod S, c2).

3. Если же оба предыдущих условия неверны, то для первой (s1, c2), для второй (s2, c1). И самое интересное, что в этом случае расширование ведётся ТАК ЖЕ. В двух предыдущих же пользуемся таким нехитрым свойством: если x2 = (x1 + d) mod n, то x1 = (x2 - d + n) mod n.


Наверное, примерчик? Без проблем. Зашифруем слово PROPERTY. Делим на биграммы: PR OP ER TY. P и R в одной строке, потому вместо каждой из этих букв берём по сути правого соседа (правило 1). Получаем RA. С OP так не пройдёт - тут и строки, и столбцы разные. Берём правило 3. Получаем DC. E и R в одном столбце. Берём соседей снизу (правило 2). Получаем RG. TY заменяется на SZ - правило 3. Итог - RADCRGSZ. Как-то не совсем похоже на PROPERTY.

А что делать, если слов несколько и нужны пробелы? Или ещё какие-то знаки препинания? Включить их в алфавит. Только один момент важен - если в алфавите количество символов равно простому числу (например, 23, 31, 43), то придётся ещё что-то добавлять, иначе нельзя составить никакой прямоугольной таблицы.
Также заметим: если известен алфавит, достаточно задать лишь один размер таблицы - второй будет равен отношению количества символов в алфавите к первому размеру.
Если в тексте нечётное число символов, придётся добавить что-то в конец.
Наконец, самый противный момент: что делать, если в биграмме одинаковые символы? Нужно что-то добавить ранее в строке, чтобы эти два символа попали в разные биграммы. Например, нужно зашифровать слово ТЕРРОР (ТЕ РР ОР). Как видим, есть биграмма РР. Это плохо. Поставим перед ним точку или пробел (главное, чтобы они были включены в алфавит). Получаем _ТЕРРОР. Нечётное число символов. Теперь ставим пробел ещё и в конце. Получаем _ТЕРРОР_ (_Т ЕР РО Р_). Теперь проблем нет.
Есть случаи посложнее. Например, АФФИННЫЕ ПРОСТРАНСТВА. Мешает биграмма НН. Если перед словом АФФИННЫЕ ставим пробел, мешает ФФ. Другой пример: www.secretdomen.ru. Тут вообще три одинаковых символа подряд - как их ни сместить, всё равно будет биграмма ww. Здесь нужны изощрения получше. Как вариант - перед каждой "паршивой" биграммой ставить редкий символ. Тогда хоть ставьте в одной строке 10 сочетаний из двух одинаковых букв и ещё 100 из пяти, программа пробежится по строке и всё исправит. Вот только неэстетично совсем... Но разобрать можно. Так, вместо текста "АФФИННЫЕ_ПРОСТРАНСТВА" получится "АФФИ.ННЫЕ_ПРОСТРАНСТВА".

2. Коротко о полиграммных шифрах

Полиграммный шифр замены работает не с отдельными символами, а с их группами. При использовании m-граммного шифра открытый текст разбивается на группы из m символов. Каждой группе из m символов открытого текста ставится в замену группа из m символов шифрованного текста. При этом изменение некоторого символа из m-символьной группы открытого текста, как правило, приводит к изменению всех m символов шифртекста. То есть поменяли один символ в исходном сообщении - и сразу m символов изменятся в шифрованном.

Шифр Плейфера - биграммный шифр. Другой пример биграммного шифра, в чём-то схожий, - Двойной квадрат Уитстона.

Обычно при разговоре о том, что такой полиграммный шифр, дело идёт к демонстрации какого-нибудь биграммного шифра, на чём и заканчивается. Но на этом занудном сайте есть пример покруче: шифр Хилла. Он может быть приспособлен к группе символов любой длины. На страничке, куда ведёт ссылка, приведён пример при m = 3. И даже любой чайник в области шифрования догадается, как получается шифр Хилла для групп из 4, 5, ..., сколь угодно какого числа символов.

Шифр Плейфера онлайн

Выберите один из вариантов параметров таблицы. Подобрав его в раскрывающемся списке, задав ключевое слово и нажав кнопку "таблица", вы увидете таблицу, которая будет использоваться для шифра Плейфера.
Внимание! Ключ шифра Плейфера должен составляться по алфавиту, вводящий посторонние символы будет беспощадно обругиваться программой.
Варианты из списка:
1 - английские буквы + точка, пробел, запятая, тире (30 символов), 6 строк, 5 столбцов
2 - алфавит как в 1, но 3 строки, 10 столбцов
3 - русские буквы без Ё + точка, пробел, запятая, тире (36 символов), 6 строк, 6 столбцов
4 - как и в 3, но 4 строки, 9 столбцов

Ключ

Таблица

Для шифрования задайте алфавит (см. список выше), ключ и открытый текст. Для расшифрования - алфавит, ключ и шифрованный текст. В поле "форматированный текст" при демонстрации шифрования показывается, какие предварительные преобразования сделаны над открытым текстом для применения шифра Плейфера. У юзера возможность не подгонять текст к пригодному виду своими силами - всё-таки это слишком сложно)))
При расшифровании программа выдаёт форматированный текст и открытый.

Открытый текст

Форматированный текст

Шифрованный текст

copyright © Исканцев Н.В., 2011

На главную
X