Двойной квадрат Уитстона (шифр Уитстона)

Описание шифра Уитстона

Две таблицы для шифра Уитстона

Нужны две таблицы, одинакового размера, в клетках прописываются символы одного и того же алфавита. Разумеется, порядок символов в таблицах должен как-то не совпадать. Можно для этого использовать random-генератор, который расставит в каждой таблице символы в случайном порядке. Другой вариант заполнения таблицы - задать ключ. Таблица заполняется в этом случае как в Шифре Плейфера. Поскольку две таблицы, нужны 2 ключа. В демонстрации внизу странички как раз есть 2 поля для ключей.

Пусть, например, у нас есть такие таблички (алфавит - 12 символов: АБВГ ДИКО ПРС_, где _ - пробел):

 

п и в о
а б г д
к р с _
г о р д
а б в и
к п с _


Вполне можно догадаться, что эти таблицы были получены по ключам ПИВО (расшифровка - путь интенсивного вырождения общества) и ГОРОД.

Как видим, таблички могут быть не квадратными, пусть слово квадрат в названии метода никого не смущает.

Ну и что с ними делать?

Как что? Применять для замены! Замена осуществляется по биграммам, то есть заменяются пары стоящих рядом символов какими-то другими парами. Если чисто символов в тексте нечётное, добавляем в конец какую-нибудь гадость, обычно это пробел.
Теперь конкретнее. Для первого символа в биграмме ищем его позицию в первой таблице, для второго - в правой. Допустмм, у нас биграмма РД:

 
п и в о
а б г д
к р с _
г о р д
а б в и
к п с _


Мысленно строим прямоугольник, полагая выделенные позиции его вершинами. По двум противоположным вершинам, как известно, легко восстановить две оставшиеся, что мы сейчас и сделаем:
 
п и в о
а б г д
к р с _
г о р д
а б в и
к п с _

В шифрованной биграмме берутся символы из ВОССТАНОВЛЕННЫХ вершин, а не исходных. Остаётся только определить, в каком порядке. Первый символ шифрованной пары должен лежать в одной строке с первым символом исходной. В нашем случае это пробел, но никак не И. Какой символ станет вторым в шифрованной паре, теперь и так ясно. Итак, вместо РД будет _И.


Ещё примерчик:
 
п и в о
а б г д
к р с _
г о р д
а б в и
к п с _


ВВ заменяется на РГ.

А что делать, если символы пары в одной строке? Допустим, у нас это ПО:
 
п и в о
а б г д
к р с _
г о р д
а б в и
к п с _


Делается такая вещь. Пусть первый символ имеет позицию (s, c) в левой таблице. Тогда он заменяется тем символом правой таблицы, какой там стоит на позиции (s, c). То есть П заменяем на Г, каждый из них находится в левом верхнем углу своей таблицы:
 
п и в о
а б г д
к р с _
г о р д
а б в и
к п с _


Пусть второй символ имеет позицию (s2, c2) в правой таблице. Тогда он заменяется тем символом левой таблицы, какой там стоит на позиции (s2, c2). То есть О заменяем на И:
 
п и в о
а б г д
к р с _
г о р д
а б в и
к п с _


Таким образом, ПО заменяется на ГИ.

В общем, всё элементарно, даже зевается как-то... Остаётся только соединить все эти шифрованные биграммы в единый шифрованный текст, вот и всё, мы зашифровали текст с помощью двойного квадрата Уитстона.