Элементарные шифры на понятном языке
Все мы довольно часто слышим такие слова и словосочетания, как «шифрование данных», «секретные шифры», «криптозащита», «шифрование», но далеко не все понимают, о чем конкретно идет речь. В этом посте разберемся, что из себя представляет шифрование и рассмотрим элементарные шифры с тем расчетом, чтобы даже далекие от IT люди поняли суть этого явления.
Прежде всего, разберемся в терминологии.
Шифрование – это такое преобразование исходного сообщения, которое не позволит всяким нехорошим людям прочитать данные, если они это сообщение перехватят. Делается это преобразование по специальным математическим и логическим алгоритмам, некоторые из которых мы рассмотрим ниже.
Исходное сообщение – это, собственно, то, что мы хотим зашифровать. Классический пример — текст.
Шифрованное сообщение – это сообщение, прошедшее процесс шифрования.
Шифр — это сам алгоритм, по которому мы преобразовываем сообщение.
Ключ — это компонент, на основе которого можно произвести шифрование или дешифрование.
Алфавит – это перечень всех возможных символов в исходном и зашифрованном сообщении. Включая цифры, знаки препинания, пробелы, отдельно строчные и заглавные буквы и т.д.
Теперь, когда мы говорим на более-менее одном языке, разберем простые шифры.
Шифр Атбаша
Самый-самый простой шифр. Его суть – переворот алфавита с ног на голову.
Например, есть у нас алфавит, который полностью соответствует обычной латинице.
Для реализации шифра Атбаша просто инвертируем его. «А» станет «Z», «B» превратится в «Y» и наоборот. На выходе получим такую картину:
И теперь пишем нужное сообшение на исходном алфавите и алфавите шифра
Исходное сообщение: I love habr
Зашифрованное: r olev szyi
Шифр Цезаря
Тут добавляется еще один параметр — примитивный ключ в виде числа от 1 до 25 (для латиницы). На практике, ключ будет от 4 до 10.
Опять же, для наглядности, возьмем латиницу
И теперь сместим вправо или влево каждую букву на ключевое число значений.
Например, ключ у нас будет 4 и смещение вправо.
Исходный алфавит: a b c d e f g h i j k l m n o p q r s t u v w x y z
Зашифрованный: w x y z a b c d e f g h i j k l m n o p q r s t u v
Пробуем написать сообщение:
Шифруем его и получаем следующий несвязный текст:
Шифр Вернама (XOR-шифр)
Простейший шифр на основе бинарной логики, который обладает абсолютной криптографической стойкостью. Без знания ключа, расшифровать его невозможно (доказано Клодом Шенноном).
Исходный алфавит — все та же латиница.
Сообщение разбиваем на отдельные символы и каждый символ представляем в бинарном виде.
Классики криптографии предлагают пятизначный код бодо для каждой буквы. Мы же попробуем изменить этот шифр для кодирования в 8 бит/символ на примере ASCII-таблицы. Каждую букву представим в виде бинарного кода.
Теперь вспомним курс электроники и элемент «Исключающее ИЛИ», также известный как XOR.
XOR принимает сигналы (0 или 1 каждый), проводит над ними логическую операцию и выдает один сигнал, исходя из входных значений.
Если все сигналы равны между собой (0-0 или 1-1 или 0-0-0 и т.д.), то на выходе получаем 0.
Если сигналы не равны (0-1 или 1-0 или 1-0-0 и т.д.), то на выходе получаем 1.
Теперь для шифровки сообщения, введем сам текст для шифровки и ключ такой же длины. Переведем каждую букву в ее бинарный код и выполним формулу сообщение XOR ключ
сообщение: LONDON
ключ: SYSTEM
Переведем их в бинарный код и выполним XOR:
В данном конкретном примере на месте результирующих символов мы увидим только пустое место, ведь все символы попали в первые 32 служебных символа. Однако, если перевести полученный результат в числа, то получим следующую картину:
С виду — совершенно несвязный набор чисел, но мы-то знаем.
Шифр кодового слова
Принцип шифрования примерно такой же, как у шифра цезаря. Только в этом случае мы сдвигаем алфавит не на определенное число позиций, а на кодовое слово.
Например, возьмем для разнообразия, кириллический алфавит.
Придумаем кодовое слово. Например, «Лукоморье». Выдернем из него все повторяющиеся символы. На выходе получаем слово «Лукомрье».
Теперь вписываем данное слово в начале алфавита, а остальные символы оставляем без изменений.
И теперь запишем любое сообщение и зашифруем его.
Получим в итоге следующий нечитаемый бред:
Шифр Плейфера
Классический шифр Плейфера предполагает в основе матрицу 5х5, заполненную символами латинского алфавита (i и j пишутся в одну клетку), кодовое слово и дальнейшую манипуляцию над ними.
Пусть кодовое слово у нас будет «HELLO».
Сначала поступаем как с предыдущим шифром, т.е. уберем повторы и запишем слово в начале алфавита.
Теперь возьмем любое сообщение. Например, «I LOVE HABR AND GITHUB».
Разобьем его на биграммы, т.е. на пары символов, не учитывая пробелы.
Если бы сообщение было из нечетного количества символов, или в биграмме были бы два одинаковых символа (LL, например), то на место недостающего или повторившегося символа ставится символ X.
Шифрование выполняется по нескольким несложным правилам:
1) Если символы биграммы находятся в матрице на одной строке — смещаем их вправо на одну позицию. Если символ был крайним в ряду — он становится первым.
Например, EH становится LE.
2) Если символы биграммы находятся в одном столбце, то они смещаются на одну позицию вниз. Если символ находился в самом низу столбца, то он принимает значение самого верхнего.
Например, если бы у нас была биграмма LX, то она стала бы DL.
3) Если символы не находятся ни на одной строке, ни на одном столбце, то строим прямоугольник, где наши символы — края диагонали. И меняем углы местами.
Например, биграмма RA.
По этим правилам, шифруем все сообщение.
Если убрать пробелы, то получим следующее зашифрованное сообщение:
Поздравляю. После прочтения этой статьи вы хотя бы примерно понимаете, что такое шифрование и знаете как использовать некоторые примитивные шифры и можете приступать к изучению несколько более сложных образцов шифров, о которых мы поговорим позднее.
Русский алфавит
Современный русский алфавит состоит из 33 букв. Алфавит в нынешнем представлении существует с 1942 года. Фактически же можно считать год 1918-й годом формирования современного русского алфавита — тогда он состоял из 32 букв (без буквы ё). Происхождение алфавита, согласно историческим документам, связано с именами Кирилл и Мефодий и относится к 9-му веку нашей эры. С момента происхождения и до 1918 года алфавит неоднократно менялся, вбирая и исключая знаки. Одно время он насчитывал более 40 букв. Русский алфавит также иногда называют русской азбукой.
На нашем сайте для каждой буквы русского алфавита имеется отдельная страница с подробным описанием, примерами слов, картинками, стихами, загадками. Их можно распечатать или скачать. Кликните по нужной букве для перехода на её страницу.
А а а Б б бэ В в вэ Г г гэ Д д дэ Е е е Ё ё ё Ж ж жэ З з зэ И и и Й й и краткое К к ка Л л эл или эль М м эм Н н эн О о о П п пэ Р р эр С с эс Т т тэ У у у Ф ф эф Х х ха Ц ц це Ч ч че Ш ш ша Щ щ ща Ъ ъ твёрдый знак Ы ы ы Ь ь мягкий знак Э э э обратное Ю ю ю Я я я
Скачать и распечатать алфавит:
Часто в письменной речи вместо буквы ё используют букву е. В большинстве случаев замена не вызывает затруднений у читающего, однако в некоторых контекстах необходимо использование буквы ё для избегания двусмысленности. Русские буквы являются именем существительным среднего рода. Стоит учитывать, что начертание букв зависит от шрифта.
Скачать буквы (в формате pdf, на каждом листе по букве).
Буквы русского алфавита
Частыми вопросами о буквах русского алфавита являются: сколько букв в алфавите, какие из них гласные и согласные, какие называются прописными и какие строчными? Основная информация о буквах часто встречается в популярных вопросах к ученикам начальных классов, в тестах на эрудицию и определение уровня IQ, в опросниках для иностранцев на знание русского языка и других подобных задачках.
Количество букв
Сколько букв в русском алфавите?
В русском алфавите 33 буквы.
Некоторые люди для запоминания количества букв в русском алфавите ассоциируют их с популярными фразами: «33 удовольствия», «33 несчастья», «33 коровы». Другие люди ассоциируют с фактами из своей жизни: живу в квартире номер 33, живу в регионе 33 (Владимирская область), играю в команде под номером 33 и подобными. И если число букв алфавита вновь забывается, то ассоциированные фразы помогают его вспомнить. Вероятно, и вам поможет?!
Гласные и согласные
Сколько в русском алфавите гласных и согласных букв?
10 гласных + 21 согласная + 2 не означают звука
Среди букв русского алфавита выделяют:
Буква означает звук. Сравните: «ка», «эль» — названия букв, [к], [л] — звуки.
Прописные и строчные
Какие буквы прописные и какие строчные?
Буквы бывают прописные (или заглавные) и строчные:
Иногда говорят: большие и маленькие буквы. Но такая формулировка некорректна, так как она означает размер буквы, а не её начертание. Сравните:
Б — большая заглавная буква, Б — маленькая заглавная буква, б — большая строчная буква, б — маленькая строчная буква.
С заглавной буквы пишутся имена собственные, начало предложений, обращение на «вы» с выражением глубокого уважения. В компьютерных программах используется термин «регистр букв». Прописные буквы набираются в верхнем регистре, строчные буквы — в нижнем регистре.
Нумерация букв
В некоторых логических задачах на определение последующего элемента в ряде, в играх при разгадывании шуточных шифров, в конкурсах на знания алфавита и в других похожих случаях требуется знать порядковые номера букв русского алфавита, в том числе номера при счёте с конца в начало алфавита. Наша наглядная «полоска» поможет быстро определить номер буквы в алфавите.
Частотность букв
Существует понятие частотности буквы (или частоты буквы). Частотность учитывает, сколько раз буква используется во всех словах русского языка. Чем чаще буква используется в речи, тем выше её частотность. В русском языке буква О имеет наибольшую частотность, буква Ё — наименьшую. Это означает, что много русских слов с буквой О и очень мало слов с буквой Ё.
Покажем частотность русских букв с указанием ранга. Так как буква О имеет наибольшую частотность, то её ранг равен 1, буква Ё с наименьшей частотностью имеет ранг 33.
В таблице ниже отражена основная информация о буквах: прямая и обратная нумерация, написание, название, звук (транскрипция), абсолютное значение частотности, процентное значение частотности, ранг частотности, а также частотность слов (или частота слов). Под частотностью слов понимается отношение слов, начинающихся с соответствующей буквы, к общему числу слов русского языка (на основе словаря Н. Тихонова).
Кодирование
Существует большое число кодов, применяемых в разных областях человеческой жизни. Общеизвестные коды применяются по большей части для удобства передачи информации тем или иным способом. Если же кодовая таблица известна только передающему и принимающему, то получается довольно примитивный шифр, который легко поддаётся частотному анализу. Но если человек далёк от теории кодирования и не знаком с частотным анализом текста, то разгадать ему такие шифры довольно проблематично.
A1Z26
Простейший шифр. Называется A1Z26 или в русском варианте А1Я33. Буквы алфавита заменяются на их порядковые номера.
«NoZDR» можно зашифровать как 14-15-26-4-18 или 1415260418.
Азбука Морзе
Буквам, цифрам и некоторым знакам сопоставляется набор точек и тире, которые можно передавать по радио, звуком, стуком, световым телеграфом и отмашкой флажками. Так как у моряков каждой букве сопоставлен ещё и соответствующий флаг, то можно передавать сообщение флагами.
Шрифт Брайля
Брайль – это система тактильного чтения для слепых, состоящая из шеститочечных знаков, называемых ячейками. Ячейка состоит из трёх точек в высоту и из двух точек в ширину.
Различные брайлевские знаки формируются путем помещения точек в различные положения внутри ячейки.
Для удобства точки описываются при чтении следующим образом: 1, 2, 3 слева сверху вниз и 4, 5, 6 справа сверху вниз.
При составлении текста придерживаются следующих правил:
Кодовые страницы
В компьютерных квестах и загадках можно кодировать буквы в соответствии с их кодами в различных кодовых страницах — таблицах, используемых на компьютерах. Для кириллических текстов лучше всего пользоваться самыми распространёнными кодировками: Windows-1251, KOI8, CP866, MacCyrillic. Хотя для сложных шифровок можно выбрать и что-то более экзотичное.
Вот здесь https://www.artlebedev.ru/tools/decoder/advanced/ есть неплохой раскодировщик таких зашифрованных текстов 🙂
Масонский шифр
Масонский шифр известен также под названием «пигпен» (Pigpen) или «крестики-нолики». Этот шифр представляет собой простой шифр замены, в котором каждой букве алфавита соответствует графический символ, вычисляемой по одной из приведённых ниже сеток.
Чтобы зашифровать определённую букву при помощи этого шифра, нужно сначала определить место, где эта буква находится в одной из четырёх сеток, а затем нарисовать ту часть сетки, которая окружает эту букву. То есть, как-то так:
Если знать ключ (то, как буквы расположены в сетках), то разгадать такую надпись довольно легко. А вот если буквы в сетках изначально расставлены по какому-то неизвестному правилу (с ключевым словом, поочерёдно или вообще случайно), то в этой ситуации всегда может помочь
Точное время происхождения шифра неизвестно, но некоторые из найденных записей этой системы датируются XVIII веком. Вариации этого шифра были использованы орденом розенкрейцеров и масонами. Последние использовали его в своих тайных документах и переписках довольно часто, поэтому шифр и стали называть шифром масонов. Даже на надгробиях масонов можно увидеть надписи, использующие данный шифр. Похожая система шифрования использовалась во время гражданской войны в США армией Джорджа Вашингтона, а также заключенными в федеральных тюрьмах Конфедераций Штатов США.
Ниже приведены два (синий и красный) варианта заполнения сетки таких шифров. Буквы расположены парами, вторая буква из пары рисуется символом с точкой:
Авторские шифры
Шифров, где одному символу алфавита (букве, цифре, знаку препинания) соответствует один (реже больше) графический знак, придумано великое множество. Большинство из них придуманы для использования в фантастических фильмах, мультфильмах и компьютерных играх. Вот некоторые из них:
Пляшущие человечки
Один из самых известных авторских шифров подстановки – это « Пляшущие человечки ». Его придумал и описал английский писатель Артур Конан Дойл в одном из своих произведений про Шерлока Холмса. Буквы алфавита заменяются символами, похожими на человечков в разных позах. В книге человечки были придуманы не для всех букв алфавита, поэтому фанаты творчески доработали и переработали символы, и получился вот такой шифр:
Алфавит Томаса Мора
А вот такой алфавит описал в своём трактате «Утопия» Томас Мор в 1516 году:
Буквенно-цифровой код
Каким способом каждому числу назначить свой образ и при этом обеспечить уникальность?
В мнемотехнике для этого используется буквенно-цифровой код. И когда мы видим какое-то слово, это слово можно преобразовать по буквам в число. Одним словом можно обозначать и двухзначные и трехзначные числа. Для разных цифр используются разные буквы. Начиная с 1634 года, было предложено множество различных вариантов. На сегодняшний день в России используют две системы. Общее направление этих систем заключается в том, что используются только согласные буквы. Гласные буквы не используются.
Буквенно-цифровой код применяется для кодирования цифр и чисел в слова Каждой цифре от 0 до 9 соответствуют по 2 уникальных согласных буквы русского алфавита. В русском алфавите согласных букв 20.
Для применения необходимо выучить буквенно-цифровой код до автоматизма, чтобы можно было переводить цифры в буквы и наоборот без задержек.
Вы должны запомнить эти комбинации на рефлекторном уровне — то есть установить прямую взаимосвязь между разными анализаторными системами; в данном случае — между зрительной и речевой.
Давайте разбираться.
Вспомним русский алфавит Что в нём есть?
— мягкий и твёрдый знак
Буквенно-цифровой код
В отечественной мнемотехнике принято такое закрепление букв за цифрами
Теперь, что бы было понять как это работает, пойдём от обратного, Превратим слова в цифры:
душ, удав, баян весы
Отметим в них согласные:
ДуШ, уДаВ, БаяН, ВеСы
Вот таким способом любое слово можно превратить в число.
* Программисты скажут: да это же хэш, физики скажут: да это фурье разложение, остальные просто не будут выпендриваться:)
Теперь выполним обратную операцию и превратим цифры в буквы.
9 это РЦ
0 это НМ
0 это НМ
Теперь пытаемся подобрать слово в котором сначала будет идти согласная буква Р или Ц, затем согласная Н или М, и опять согласная Н или М. Гласных букв может быть сколько угодно в любом месте слова.
Таким способом можно закодировать как слова так и словосочетания. Опытные мнемонисты на автоматическом уровне знают образы до 1000.
Сложности
И всё таки в некоторых случаях, из-за трудностей в подборе слов, кодирование может не соответствовать общим правилам.
Используя этот код и правила составления слов, можно создать список, состоящий из 100 слов-образов. Выучив который, вы сможете быстро и легко запоминать любую цифровую информацию (даты, номера телефонов и т.д.), группируя ее по 2 цифры. Как показывает практика, дети и взрослые довольно быстро усваивают и активно применяют свои число-буквенные списки на практике. Необходимо немного потренироваться в переводе цифр в образы. Тренируйтесь на номерах телефонов, чтобы запомнить код, а потом и весь список. Нужно отметить, что сначала лучше подбирать несколько слов к одной цифре. В процессе тренировок вы сможете выбрать одно слово, имеющее наиболее яркий образ.
*При подготовке статьи использовались материалы сайта mnemonikon В. Козаренко
Шифры замены
Моноалфавитные шифры
В шифрах с моноалфавитной заменой каждая буква заменяется на одну и только одну другую букву/символ или группу букв/символов. Если в алфавите 33 буквы, значит есть 33 правила замены: на что менять А, на что менять Б и т.д.
Использование метода частотного анализа для расшифровки шифрованных сообщений красиво описано во многих литературных произведениях, например, у Артура Конана Дойля в романе « Пляшущие человечки » или у Эдгара По в « Золотом жуке ».
Составить кодовую таблицу для шифра моноалфавитной замены легко, но запомнить её довольно сложно и при утере восстановить практически невозможно, поэтому обычно придумывают какие-то правила составления таких кодовых страниц. Ниже приведены самые известные из таких правил.
Случайный код
Ключевое слово
Разгадав арифметический ребус-рамку и сопоставив буквы и цифры зашифрованного слова, затем нужно будет получившееся слово вписать в кодовую таблицу вместо цифр, а оставшиеся буквы вписать по-порядку. Получится вот такая кодовая таблица:
Атбаш
Фраза «ВОЗЬМИ ЕГО В ЭКСЕПШН» превращается при помощи этого шифра в «ЭРЧГТЦ ЪЬР Э ВФНЪПЖС».
Гласные-согласные
Для составления кодовой таблицы нужно сначала написать алфавит по порядку, а затем под ним выписать сначала гласные, а затем все остальные буквы. Получится вот такая таблица.
Этот шифр известен многим детям. Ключ прост: каждая буква заменяется на следующую за ней в алфавите. Так, A заменяется на Б, Б на В и т.д., а Я заменяется на А. «ROT1» значит «ROTate 1 letter forward through the alphabet» (англ. «поверните/сдвиньте алфавит на одну букву вперед»). Сообщение «Хрюклокотам хрюклокотамит по ночам» станет «Цсялмплпубн цсялмплпубнйу рп опшбн». ROT1 весело использовать, потому что его легко понять даже ребёнку, и легко применять для шифрования. Но его так же легко и расшифровать.
ROT3 или Шифр Цезаря
Шифр Цезаря — один из древнейших шифров. При шифровании каждая буква заменяется другой, отстоящей от неё в алфавите не на одну, а на большее число позиций. Шифр назван в честь римского императора Гая Юлия Цезаря, использовавшего его для секретной переписки. Он использовал сдвиг на три буквы (ROT3). Шифрование для русского алфавита многие предлагают делать с использованием такого сдвига:
Я всё же считаю, что в русском языке 33 буквы, поэтому предлагаю вот такую кодовую таблицу:
Интересно, что в этом варианте в алфавите замены читается фраза «где ёж?», поэтому можно используя эту фразу, «намекнуть» разгадывающему на применённый способ шифрования 🙂
В этом варианте кодируются только цифры, остальной текст остаётся без изменений. Производится 5 замен, поэтому и ROT5: 0↔5, 1↔6, 2↔7, 3↔8, 4↔9.
ROT13
ROT13 — это вариация шифра Цезаря для латинского алфавита со сдвигом на 13 символов. Его часто применяют в интернете в англоязычных форумах как средство для сокрытия спойлеров, основных мыслей, решений загадок и оскорбительных материалов от случайного взгляда.
Латинский алфавит из 26 букв делится на две части. Вторая половина записывается под первой. При кодировании буквы из верхней половины заменяются на буквы из нижней половины и наоборот.
ROT18
ROT47
Квадрат Полибия
Такую таблицу можно использовать как в шифре Цезаря. Для шифрования на квадрате находим букву текста и вставляем в шифровку нижнюю от неё в том же столбце. Если буква в нижней строке, то берём верхнюю из того же столбца. Для кириллицы можно использовать таблицу РОТ11 (аналог шифра Цезаря со сдвигом на 11 символов):
Квадрат Полибия можно создавать и с использованием кодового слова. Сначала в таблицу вписывается кодовое слово, затем остальные буквы. Кодовое слово при этом не должно содержать повторяющихся букв.
Ниже приведён пример настоящего шифра, использовавшегося польскими шпионами в СССР накануне войны. В нём использован классический квадрат Полибия, но усложнена методика кодирования номеров столбцов и строк. За счёт такого усложнения становится невозможным применить частотный анализ для декодирования.
Стихотворный шифр
Этот метод шифрования похож на шифр Полибия, только в качестве ключа используется не алфавит, а стихотворение, которое вписывается построчно в квадрат заданного размера (например, 10×10). Если строка не входит, то её «хвост» обрезается или переносится на другую строку. Далее полученный квадрат используется для кодирования текста побуквенно двумя координатами, как в квадрате Полибия. Например, берём хороший стих «Бородино» Лермонтова и заполняем таблицу. Замечаем, что букв Ё, Й, Х, Ш, Щ, Ъ, Э в таблице нет, а значит и зашифровать их мы не сможем. Буквы, конечно, редкие и могут не понадобиться. Но если они всё же будут нужны, придётся выбирать другой стих, в котором есть все буквы.
Такая большая таблица с повторяющимися буквами хороша тем, что одну и ту же букву можно зашифровать разными способами. Например, буква О встречается в ней 12 раз и может быть зашифрована 12-ю различными способами. Это существенно затрудняет расшифровку, потому что не даёт применить для декодирования частотный анализ.
Для шифрования надо было из каждой пары чисел в любом порядке взять одно или оба числа. Например, буква Е встречается в тексте 24 раза. Самая первая Е расположена на пересечении 10,42 и 27,59. Если использовать по одному числу из пары, то эту букву Е можно было зашифровать 8-ю разными способами: 10 27, 10 59, 42 27, 42 59, 27 10, 59 10, 27 42, 59 42. И так каждую из 24-х букв Е. Итого 192 разных способа зашифровать букву Е. И это если брать только одно число из пары. Если же брать по два, то число вариантов увеличится. Частотный анализ тут будет бессилен.
Не зная текста и способа расставления чисел в кодовой таблице расшифровать такой шифр невозможно. При этом саму кодовую таблицу довольно легко запомнить.
РУС/LAT
Наверное, самый часто встречающийся шифр 🙂 Если пытаться писать по-русски, забыв переключиться на русскую раскладку, то получится что-то типа этого: Tckb gsnfnmcz gbcfnm gj-heccrb? pf,sd gthtrk.xbnmcz yf heccre. hfcrkflre? nj gjkexbncz xnj-nj nbgf ‘njuj^ Ну чем не шифр? Самый что ни на есть шифр замены. В качестве кодовой таблицы выступает клавиатура.
Таблица перекодировки выглядит вот так:
ЙЦУКЕН
На основе клавиатуры можно придумать и другую таблицу перекодировки. В кодовой её части выписаны по порядку буквы с классической клавиатуры с русской раскладкой.
Литорея
Литорея (от лат. littera — буква) — тайнописание, род шифрованного письма, употреблявшегося в древнерусской рукописной литературе. Известна литорея двух родов: простая и мудрая. Простая, иначе называемая тарабарской грамотой, заключается в следующем. Если «е» и «ё» считать за одну букву, то в русском алфавите остаётся тридцать две буквы, которые можно записать в два ряда — по шестнадцать букв в каждом:
Получится русский аналог шифра ROT13 — РОТ16 🙂 При шифровке верхнюю букву меняют на нижнюю, а нижнюю — на верхнюю. Ещё более простой вариант литореи — оставляют только двадцать согласных букв:
Получается шифр РОТ10. При шифровании меняют только согласные, а гласные и остальные, не попавшие в таблицу, оставляют как есть. Получается что-то типа «словарь → лсошамь» и т.п.
Шифрование биграммами
Шифр Плейфера
Шифр Плейфера использует таблицу 5х5 (для латинского алфавита, для русского алфавита необходимо увеличить размер таблицы до 6х6), содержащую ключевое слово или фразу. Для создания таблицы и использования шифра достаточно запомнить ключевое слово и четыре простых правила. Чтобы составить ключевую таблицу, в первую очередь нужно заполнить пустые ячейки таблицы буквами ключевого слова (не записывая повторяющиеся символы), потом заполнить оставшиеся ячейки таблицы символами алфавита, не встречающимися в ключевом слове, по порядку (в английских текстах обычно опускается символ «Q», чтобы уменьшить алфавит, в других версиях «I» и «J» объединяются в одну ячейку). Ключевое слово и последующие буквы алфавита можно вносить в таблицу построчно слева-направо, бустрофедоном или по спирали из левого верхнего угла к центру. Ключевое слово, дополненное алфавитом, составляет матрицу 5х5 и является ключом шифра.
Для того, чтобы зашифровать сообщение, необходимо разбить его на биграммы (группы из двух символов), например «Hello World» становится «HE LL OW OR LD», и отыскать эти биграммы в таблице. Два символа биграммы соответствуют углам прямоугольника в ключевой таблице. Определяем положения углов этого прямоугольника относительно друг друга. Затем руководствуясь следующими 4 правилами зашифровываем пары символов исходного текста:
Рассмотрим пример составления шифра. Используем ключ «Playfair example», выписываем уникальные буквы: PLAYFIREXM, записываем их построчно в таблицу и далее оставшиеся буквы алфавита. Наша кодировочная таблица примет вид:
Зашифруем сообщение «Hide the gold in the tree stump». Разбиваем его на пары, не забывая про правило [1]. Получаем: «HI DE TH EG OL DI NT HE TR EX ES TU MP». Далее применяем правила [2]-[4]:
Получаем зашифрованный текст «BM ND ZB XD KY BE JV DM UI XM MN UV IF». Таким образом сообщение «Hide the gold in the tree stump» преобразуется в «BMNDZBXDKYBEJVDMUIXMMNUVIF».
Двойной квадрат Уитстона
Чарльз Уитстон разработал не только шифр Плейфера, но и другой метод шифрования биграммами, который называют «двойным квадратом». Шифр использует сразу две таблицы, размещенные по одной горизонтали, а шифрование идет биграммами, как в шифре Плейфера.
Имеется две таблицы со случайно расположенными в них алфавитами (для примера будем использовать наш алфавит).
Если обе буквы биграммы сообщения лежат в одной строке, то и буквы шифртекста берут из этой же строки. Первую букву биграммы шифртекста берут из левой таблицы в столбце, соответствующем второй букве биграммы сообщения. Вторая же буква биграммы шифртекста берется из правой таблицы в столбце, соответствующем первой букве биграммы сообщения. Поэтому биграмма сообщения ТО превращается в биграмму шифртекста ЖБ. Аналогичным образом шифруются все биграммы сообщения:
Сообщение ПР ИЛ ЕТ АЮ _Ш ЕС ТО ГО
Шифртекст ПЕ ОВ ЩН ФМ ЕШ РФ БЖ ДЦ
Шифрование методом «двойного квадрата» дает весьма устойчивый к вскрытию и простой в применении шифр. Взламывание шифртекста «двойного квадрата» требует больших усилий, при этом длина сообщения должна быть не менее тридцати строк, а без компьютера вообще не реально.
Полиалфавитные шифры
Шифр Виженера
Естественным развитием шифра Цезаря стал шифр Виженера. В отличие от моноалфавитных это уже полиалфавитный шифр. Шифр Виженера состоит из последовательности нескольких шифров Цезаря с различными значениями сдвига. Для зашифровывания может использоваться таблица алфавитов, называемая «tabula recta» или «квадрат (таблица) Виженера». На каждом этапе шифрования используются различные алфавиты, выбираемые в зависимости от буквы ключевого слова.
Для латиницы таблица Виженера может выглядеть вот так:
Для русского алфавита вот так:
Шифруют так: под строкой с исходным текстом во вторую строку циклически записывают ключевое слово до тех пор, пока не заполнится вся строка. У каждой буквы исходного текста снизу имеем свою букву ключа. Далее в таблице находим кодируемую букву текста в верхней строке, а букву кодового слова слева. На пересечении столбца с исходной буквой и строки с кодовой буквой будет находиться искомая шифрованная буква текста.
Важным эффектом, достигаемым при использовании полиалфавитного шифра типа шифра Виженера, является маскировка частот появления тех или иных букв в тексте, чего лишены шифры простой замены. Поэтому к такому шифру применить частотный анализ уже не получится.
Ниже приведён пример настоящих шифров на базе шифра Виженера, использовавшихся польскими шпионами на территории СССР перед войной.
Шифр Гронсвельда
Это вариация шифра Виженера, где вместо ключевого слова применяется ключевое число, цифры которого показывают, какой из ROT-шифров применять (на сколько позиций сдвигать букву).
Книжный шифр
Можно использовать не конкретное издание, а какой-то классический текст, который не менялся от одного издания к другому. Например, стихотворную поэму Пушкина « Гавриилиада » или Декларацию независимости США.