Как составить шифр слова

Элементарные шифры на понятном языке

Время на прочтение
4 мин

Количество просмотров 236K

Привет, Хабр!

Все мы довольно часто слышим такие слова и словосочетания, как «шифрование данных», «секретные шифры», «криптозащита», «шифрование», но далеко не все понимают, о чем конкретно идет речь. В этом посте разберемся, что из себя представляет шифрование и рассмотрим элементарные шифры с тем расчетом, чтобы даже далекие от IT люди поняли суть этого явления.

Прежде всего, разберемся в терминологии.

Шифрование – это такое преобразование исходного сообщения, которое не позволит всяким нехорошим людям прочитать данные, если они это сообщение перехватят. Делается это преобразование по специальным математическим и логическим алгоритмам, некоторые из которых мы рассмотрим ниже.

Исходное сообщение – это, собственно, то, что мы хотим зашифровать. Классический пример — текст.

Шифрованное сообщение – это сообщение, прошедшее процесс шифрования.

Шифр — это сам алгоритм, по которому мы преобразовываем сообщение.

Ключ — это компонент, на основе которого можно произвести шифрование или дешифрование.

Алфавит – это перечень всех возможных символов в исходном и зашифрованном сообщении. Включая цифры, знаки препинания, пробелы, отдельно строчные и заглавные буквы и т.д.

Теперь, когда мы говорим на более-менее одном языке, разберем простые шифры.

  • Шифр Атбаша

Самый-самый простой шифр. Его суть – переворот алфавита с ног на голову.

Например, есть у нас алфавит, который полностью соответствует обычной латинице.

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

Для реализации шифра Атбаша просто инвертируем его. «А» станет «Z», «B» превратится в «Y» и наоборот. На выходе получим такую картину:

И теперь пишем нужное сообшение на исходном алфавите и алфавите шифра

Исходное сообщение: I love habr
Зашифрованное: r olev szyi

  • Шифр Цезаря

Тут добавляется еще один параметр — примитивный ключ в виде числа от 1 до 25 (для латиницы). На практике, ключ будет от 4 до 10.

Опять же, для наглядности, возьмем латиницу

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

И теперь сместим вправо или влево каждую букву на ключевое число значений.

Например, ключ у нас будет 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

Пробуем написать сообщение:

hello world

Шифруем его и получаем следующий несвязный текст:

dahhk sknhz

  • Шифр Вернама (XOR-шифр)

Простейший шифр на основе бинарной логики, который обладает абсолютной криптографической стойкостью. Без знания ключа, расшифровать его невозможно (доказано Клодом Шенноном).

Исходный алфавит — все та же латиница.

Сообщение разбиваем на отдельные символы и каждый символ представляем в бинарном виде.
Классики криптографии предлагают пятизначный код бодо для каждой буквы. Мы же попробуем изменить этот шифр для кодирования в 8 бит/символ на примере ASCII-таблицы. Каждую букву представим в виде бинарного кода.

image

Теперь вспомним курс электроники и элемент «Исключающее ИЛИ», также известный как XOR.

XOR принимает сигналы (0 или 1 каждый), проводит над ними логическую операцию и выдает один сигнал, исходя из входных значений.

Если все сигналы равны между собой (0-0 или 1-1 или 0-0-0 и т.д.), то на выходе получаем 0.
Если сигналы не равны (0-1 или 1-0 или 1-0-0 и т.д.), то на выходе получаем 1.

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

Например:

сообщение: LONDON
ключ: SYSTEM

Переведем их в бинарный код и выполним XOR:

01001100 01001111 01001110 01000100 01001111 01001110
01010011 01011001 01010011 01010100 01000101 01001101
_______________________________________________________
00011111 00010110 00011101 00010000 00001010 00000011

В данном конкретном примере на месте результирующих символов мы увидим только пустое место, ведь все символы попали в первые 32 служебных символа. Однако, если перевести полученный результат в числа, то получим следующую картину:

31 22 29 16 10 3. 

С виду — совершенно несвязный набор чисел, но мы-то знаем.

  • Шифр кодового слова

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

Например, возьмем для разнообразия, кириллический алфавит.

абвгдеёжзийклмнопрстуфхцчшщъыьэюя

Придумаем кодовое слово. Например, «Лукоморье». Выдернем из него все повторяющиеся символы. На выходе получаем слово «Лукомрье».

Теперь вписываем данное слово в начале алфавита, а остальные символы оставляем без изменений.

абвгдеёжзийклмнопрстуфхцчшщъыьэюя
лукомрьеабвгдёжзийнпстфхцчшщъыэюя

И теперь запишем любое сообщение и зашифруем его.

"Златая цепь на дубе том"

Получим в итоге следующий нечитаемый бред:

"Адлпля хриы жл мсур пиё"

  • Шифр Плейфера

Классический шифр Плейфера предполагает в основе матрицу 5х5, заполненную символами латинского алфавита (i и j пишутся в одну клетку), кодовое слово и дальнейшую манипуляцию над ними.

Пусть кодовое слово у нас будет «HELLO».

Сначала поступаем как с предыдущим шифром, т.е. уберем повторы и запишем слово в начале алфавита.

Теперь возьмем любое сообщение. Например, «I LOVE HABR AND GITHUB».

Разобьем его на биграммы, т.е. на пары символов, не учитывая пробелы.

IL OV EH AB RA ND GI TH UB.

Если бы сообщение было из нечетного количества символов, или в биграмме были бы два одинаковых символа (LL, например), то на место недостающего или повторившегося символа ставится символ X.

Шифрование выполняется по нескольким несложным правилам:

1) Если символы биграммы находятся в матрице на одной строке — смещаем их вправо на одну позицию. Если символ был крайним в ряду — он становится первым.

Например, EH становится LE.

2) Если символы биграммы находятся в одном столбце, то они смещаются на одну позицию вниз. Если символ находился в самом низу столбца, то он принимает значение самого верхнего.

Например, если бы у нас была биграмма LX, то она стала бы DL.

3) Если символы не находятся ни на одной строке, ни на одном столбце, то строим прямоугольник, где наши символы — края диагонали. И меняем углы местами.

Например, биграмма RA.

По этим правилам, шифруем все сообщение.

IL OV EH AB RA ND GI TH UB.
KO HY LE HG EU MF BP QO QG

Если убрать пробелы, то получим следующее зашифрованное сообщение:

KOHYLEHGEUMFBPQOQG

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

Спасибо за внимание.


Загрузить PDF


Загрузить PDF

Обродай ожаловатьпай анай иптографиюкрай сай икихаувай!
Независимо от того, пишите ли вы записки своим друзьям в классе или пытаетесь постигнуть криптографию (науку о кодах и шифрах) ради интереса, эта статья может помочь вам узнать некоторые основные принципы и создать свой собственный способ кодировки личных сообщений. Прочитайте шаг 1 ниже, чтобы понять с чего начинать!

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

Стандартные коды

  1. Изображение с названием Create Secret Codes and Ciphers Step 1

    1

    Создайте свою собственную книгу кода. Любой полноценный код требует наличия книги кода. Придумайте слова или фразы, замещающие необходимые вам слова или фразы, затем соберите их всех вместе в книге кода, чтобы вы могли поделиться ею с вашими супер секретными друзьями.

  2. Изображение с названием Create Secret Codes and Ciphers Step 2

    2

    Создайте ваше сообщение. Используя книгу кода, аккуратно и внимательно напишите сообщение. Обратите внимание, что соединение вашего кода с шифром сделает ваше сообщение еще более защищенным!

  3. Изображение с названием Create Secret Codes and Ciphers Step 3

    3

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

    Реклама

Книга кода

  1. Изображение с названием Create Secret Codes and Ciphers Step 4

    1

    Выберите книгу. При использовании книги кода вы создадите код, обозначающий место нужных слов в книге. Если вы хотите увеличить шансы того, что любое из необходимых вам слов будет в книге кода, то используйте словари или большие справочники путешественника. Вам необходимо, чтобы количество слов, используемых в книге, было большим и относилось к разным темам.

  2. Изображение с названием Create Secret Codes and Ciphers Step 5

    2

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

    • Итак, например, слово на странице 105, пятая строчка вниз, двенадцатое по счету станет 105512, 1055.12 или чем-то похожим.
  3. Изображение с названием Create Secret Codes and Ciphers Step 6

    3

    Передайте сообщение. Отдайте зашифрованное сообщение вашему другу. Тому понадобится использовать ту же самую книгу для обратного перевода сообщения.

    Реклама

Полицейское кодирование

  1. Изображение с названием Create Secret Codes and Ciphers Step 7

    1

    Выбирайте самые популярные фразы. Этот тип кода работает лучше всего, когда у вас есть набор фраз, которые вы используете чаще всего. Это может быть чем-нибудь от простого «Он симпатичный!» до чего-нибудь более серьезного, например, «Я не могу встретиться прямо сейчас».

  2. Изображение с названием Create Secret Codes and Ciphers Step 8

    2

    Подготовьте код для каждой из фраз. Вы можете использовать аналог полицейского кодирования и присвоить каждой фразе номер или несколько букв или использовать другие фразы (как поступают в больницах). Например, вы можете сказать «1099» вместо «Эта линия прослушивается» или вы можете сказать «Я думаю о том, чтобы поехать порыбачить на этих выходных». Использование цифр легче при письме, но использование фраз выглядит менее подозрительно.

  3. Изображение с названием Create Secret Codes and Ciphers Step 9

    3

    Запомните код. Этот тип кодировки работает лучше всего, если вы можете держать в памяти все фразы, хотя наличие книги кода для подстраховки никогда не повредит!

    Реклама

Шифрование, основанное на дате

  1. Изображение с названием Create Secret Codes and Ciphers Step 9

    1

    Выберите дату. Например, это будет день рождения Стивена Спилберга 18 декабря 1946 года. Напишите эту дату, используя цифры и косые черты (12/18/46), затем уберите черты, чтобы получить шестизначное число 121846, которые вы можете использовать для передачи зашифрованного сообщения.

  2. Изображение с названием Create Secret Codes and Ciphers Step 11

    2

    Присвойте каждой букве цифру. Представьте, что сообщение «Мне нравятся фильмы Стивена Спилберга». Под сообщение вы напишите ваше шестизначное число снова и снова до самого конца предложения: 121 84612184 612184 6121846 121846121.

  3. Изображение с названием Create Secret Codes and Ciphers Step 12

    3

    Зашифруйте ваше сообщение. Напишите буквы слева направо. Передвиньте каждую букву обычного текста на количество единиц, указанных под ней. Буква «М» сдвигается на одну единицу и становится «Н», буква «Н» сдвигается на две единицы и становится «П». Обратите внимание, что буква «Я» сдвигается на 2 единицы, для этого вам необходимо перескочить на начало алфавита, и становится «Б». Ваше итоговое сообщение будет «Нпё хфёгбущг ъйныфя чукгмсё тсйуексеб».

  4. Изображение с названием Create Secret Codes and Ciphers Step 13

    4

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

    • Кодирование при помощи даты имеет дополнительное преимущество, так как дата может быть абсолютно любой. Вы также можете изменить дату в любой момент. Это позволяет обновлять систему шифра гораздо легче, чем при использовании других методов. Как бы то ни было лучше избегать таких известных дат как 9 мая 1945 года.

    Реклама

Шифрование при помощи числа

  1. 1

    Выберите с вашим другом секретное число. Например, число 5.

  2. 2

    Напишите ваше сообщение (без пробелов) с этим количеством букв в каждой строчке (не переживайте, если последняя строчка короче). Например, сообщение «Мое прикрытие раскрыто» будет выглядеть так:

    • Моепр
    • икрыт
    • иерас
    • крыто
  3. 3

    Чтобы создать шифр возьмите буквы сверху вниз и запишите их. Сообщение будет «Миикокереррыпыатртао».

  4. 4

    Для расшифровки вашего сообщения ваш друг должен посчитать общее количество букв, разделить его на 5 и определить, есть ли неполные строки. После этого он/она записывает эти буквы в колонки, так чтобы было 5 букв в каждом ряду и одна неполная строка (если есть), и читает сообщение.

    Реклама

Графический шифр

  1. Изображение с названием Create Secret Codes and Ciphers Step 14

    1

    Нарисуйте знаки «решетка» и «+». На листе бумаги создайте основу вашего шифра. Она будет выглядеть, как # и + (поверните знак плюса, чтобы он выглядел как ромб, а не квадрат). [1]

  2. Изображение с названием Create Secret Codes and Ciphers Step 15

    2

    Расставьте буквы по ячейкам. Данные фигуры имеют ячейки между линиями. Заполните эти ячейки двумя буквами алфавита. Размещайте буквы хаотично и не используйте одну и ту же букву дважды.

    • Любой адресат сообщения будет должен иметь такую же копию основы шифра с буквами, для того чтобы прочитать ваше сообщение.
  3. Изображение с названием Create Secret Codes and Ciphers Step 16

    3

    Запишите ваш код. Возьмите первую букву вашего сообщения. Найдите ее в основе шифра. Посмотрите на линии, которые вокруг нее. Нарисуйте такие же линии, как и линии, которые образуют ячейки в основе шифра. Если буква, которую вы пишите, является второй в ячейке, добавьте точку к линиям. Проделайте данную операцию для каждой буквы сообщения.

    Реклама

Перестановка Цезаря

  1. Изображение с названием Create Secret Codes and Ciphers Step 17

    1

    Создайте свой алфавит шифра. Шифр Цезаря перемещает алфавит и затем заменяет буквы их новым номером по порядку. [2]
    Это делает код более трудным для взлома, если вы меняете расстановку регулярно. Например, 3-х перестановочный шифр будет означать, что А становится Э, Б становится Ю, В становится Я и т.д. Если вы хотите написать «Встречаемся завтра на станции», то сообщение будет выглядеть «Яопнвфэвйоь еэяпнэ кэ опэкуёё».

    • Существует много вариантов изменения порядка алфавита перед созданием кода. Это делает шифр более надежным.
  2. Изображение с названием Create Secret Codes and Ciphers Step 18

    2

    Запишите ваше сообщение. Наличие помощника, как декодирующий круг, может сделать это проще, если вы сможете подготовить такое, которое будет подходить вашему коду.

  3. Изображение с названием Create Secret Codes and Ciphers Step 19

    3

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

    Реклама

Путаный язык

  1. Изображение с названием Create Secret Codes and Ciphers Step 20

    1

    Определите слова, которые начинаются с гласных. Если есть такие, просто добавляйте «ай» на конце слова. Например, «ухо» станет «ухоай», «арка» станет «аркаай» и «оскорбление» станет «оскоблениеай».

  2. Изображение с названием Create Secret Codes and Ciphers Step 21

    2

    Определите слова, которые начинаются с согласной. Если есть такие, то перенесите первую букву слова в конец и добавьте «ай». Если в начале слова стоят две (или более) согласных, переставьте их в конец и добавьте «ай».

    • Например, «труп» станет «уптрай», «грамм» станет «аммграй» и «мысль» станет «ысльмай».
  3. Изображение с названием Create Secret Codes and Ciphers Step 22

    3

    Говорите на путаном языке. Путаный язык работает лучше всего, если на нем говорить быстро, но для этого потребуется некоторое время подготовки. Не прекращайте практиковаться!

    Реклама

Звуковой код

  1. Изображение с названием Create Secret Codes and Ciphers Step 23

    1

    Создайте свой звуковой код. Этот код будет работать также как и азбука Морзе. Вам будет нужно присвоить звуковой ритмичный код каждой букве или отдельному слову. Выберите ритмы, которые вы можете запомнить.

  2. Изображение с названием Create Secret Codes and Ciphers Step 24

    2

    Научите вашему коду других. Код должен быть всегда в памяти, поэтому научите коду всех, с кем планируете его использовать.

  3. Изображение с названием Create Secret Codes and Ciphers Step 25

    3

    Простучите ваше сообщение. Используйте ваши пальцы, конец карандаша или другой инструмент для передачи вашего сообщения. Старайтесь быть скрытными. Вам не надо, чтобы кто-то догадался, что вы общаетесь.

    Реклама

Тарабарский язык

  1. Изображение с названием Create Secret Codes and Ciphers Step 26

    1

    Научитесь говорить на тарабарском языке. Тарабарский язык – языковая игра наподобие путаного языка, но звучит более сложно. Короткое объяснение – вам надо добавлять «-отаг» (или любой аналог)перед каждой гласной в слоге. Это гораздо хитрее, чем звучит на самом деле! Вам потребуется практика, чтобы в совершенстве овладеть этим кодом.

Советы

  • Прячьте ваш код в том месте, о котором знают только отправитель и получатель. Например, развинтите любую ручку и положите ваш код внутрь нее, соберите ручку обратно, найдите место (например, подставка под карандаши) и сообщите получателю место и тип ручки.
  • Шифруйте также и пробелы, чтобы запутать код еще больше. Например, вы можете использовать буквы (Е, Т, А, О и Н работают лучше всего) вместо пробелов. Они называются пустышками. Ы, Ъ, Ь и Й будут выглядеть слишком явными пустышками для опытных взломщиков кодов, поэтому не используйте их или другие выделяющиеся символы.
  • Вы можете создать свой собственный код, переставляя буквы в словах в случайном порядке. «Диж яемн в крапе» – «Жди меня в парке».
  • Всегда отправляйте коды агентам с вашей стороны.
  • При использовании турецкого ирландского вам не нужно специально использовать «эб» перед согласной. Вы можете использовать «иэ», «бр», «из» или любую другую неприметную комбинацию букв.
  • При использовании позиционной кодировки, не стесняйтесь добавлять, удалять и даже переставлять буквы с одного места на другое, чтобы сделать дешифровку еще более трудной. Убедитесь, что ваш партнер понимает, что вы делаете, или все это будет бессмысленным для нее/него. Вы можете разбить текст на части так, чтобы было три, четыре или пять букв в каждой, а затем поменять их местами.
  • Для перестановки Цезаря вы можете переставлять буквы на любое количество мест, которое вы хотите, вперед или назад. Только убедитесь что правила перестановок одинаковы для каждой буквы.
  • Всегда уничтожайте расшифрованные сообщения.
  • Если вы используете свой собственный код, не делайте его слишком сложным, чтобы остальные не смогли его разгадать. Он может оказаться слишком сложным для расшифровки даже для вас!
  • Используйте азбуку Морзе. Это один из самых известных кодов, поэтому ваш собеседник быстро поймет, что это.

Реклама

Предупреждения

  • Если вы пишете код неаккуратно, то это сделает процесс декодирования более сложным для вашего партнера, при условии что вы не используете вариации кодов или шифров, созданные специально, чтобы запутать дешифровальщика (за исключением вашего партнера, конечно).
  • Путаный язык лучше использовать для коротких слов. С длинными словами он не настолько эффективен, потому что дополнительные буквы гораздо более заметны. То же самое при использовании его в речи.

Реклама

Что вам понадобится

Для кодов:

  • Книга или словарь
  • Карандаш
  • Бумага

Для шифров:

  • Партитура для кода
  • Карандаш
  • Бумага
  • Любая дата

Источники

Об этой статье

Эту страницу просматривали 83 769 раз.

Была ли эта статья полезной?

Коды и шифры — не одно и то же: в коде каждое слово заменяется другим, в то время как в шифре заменяются все символы сообщения.

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

  1. Стандартные шифры
  2. Цифровые шифры
  3. Как расшифровать код или шифр?

Стандартные шифры

ROT1

Этот шифр известен многим детям. Ключ прост: каждая буква заменяется на следующую за ней в алфавите. Так, А заменяется на Б, Б — на В, и т. д. Фраза «Уйрйшоьк Рспдсбннйту» — это «Типичный Программист».

Попробуйте расшифровать сообщение:

Лбл еёмб, рспдсбннйту?

Сумели? Напишите в комментариях, что у вас получилось.

Шифр транспонирования

В транспозиционном шифре буквы переставляются по заранее определённому правилу. Например, если каждое слово пишется задом наперед, то из hello world получается dlrow olleh. Другой пример — менять местами каждые две буквы. Таким образом, предыдущее сообщение станет eh ll wo ro dl.

Ещё можно использовать столбчатый шифр транспонирования, в котором каждый символ написан горизонтально с заданной шириной алфавита, а шифр создаётся из символов по вертикали. Пример:

Столбчатый шифр транспонирования

Из этого способа мы получим шифр holewdlo lr. А вот столбчатая транспозиция, реализованная программно:

def split_len(seq, length):
   return [seq[i:i + length] for i in range(0, len(seq), length)]
def encode(key, plaintext):
   order = {
      int(val): num for num, val in enumerate(key)
   }
ciphertext = ''

for index in sorted(order.keys()):
   for part in split_len(plaintext, len(key)):
      try:ciphertext += part[order[index]]
         except IndexError:
            continue
   return ciphertext
print(encode('3214', 'HELLO'))

Азбука Морзе

В азбуке Морзе каждая буква алфавита, цифры и наиболее важные знаки препинания имеют свой код, состоящий из череды коротких и длинных сигналов:
Азбука Морзе: кириллицаЧаще всего это шифрование передаётся световыми или звуковыми сигналами.

Сможете расшифровать сообщение, используя картинку?

•−−   −•− −−− −• −•−• •   ••• − •− − −••− ••   • ••• − −••−   −•• • −−−− •• ••−• •−• •− − −−− •−• −•−− 

Шифр Цезаря

Это не один шифр, а целых 26, использующих один принцип. Так, ROT1 — лишь один из вариантов шифра Цезаря. Получателю нужно просто сообщить, какой шаг использовался при шифровании: если ROT2, тогда А заменяется на В, Б на Г и т. д.

А здесь использован шифр Цезаря с шагом 5:

Иербэй йюк ёурбэй нтчйхйцтаъ энщхуж

Моноалфавитная замена

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

Например, наиболее часто встречающаяся буква в английском алфавите — «E». Таким образом, в тексте, зашифрованном моноалфавитным шрифтом, наиболее часто встречающейся буквой будет буква, соответствующая «E». Вторая наиболее часто встречающаяся буква — это «T», а третья — «А».

Однако этот принцип работает только для длинных сообщений. Короткие просто не содержат в себе достаточно слов.

Шифр Виженера

Шифр Виженера

Представим, что есть таблица по типу той, что на картинке, и ключевое слово «CHAIR». Шифр Виженера использует принцип шифра Цезаря, только каждая буква меняется в соответствии с кодовым словом.

В нашем случае первая буква послания будет зашифрована согласно шифровальному алфавиту для первой буквы кодового слова «С», вторая буква — для «H», etc. Если послание длиннее кодового слова, то для (k*n+1)-ой буквы, где n — длина кодового слова, вновь будет использован алфавит для первой буквы кодового слова.

Чтобы расшифровать шифр Виженера, для начала угадывают длину кодового слова и применяют частотный анализ к каждой n-ной букве послания.

Попробуйте расшифровать эту фразу самостоятельно:

зюм иэлруй южжуглёнъ

Подсказка длина кодового слова — 4.

Шифр Энигмы

Энигма — это машина, которая использовалась нацистами во времена Второй Мировой для шифрования сообщений.

Есть несколько колёс и клавиатура. На экране оператору показывалась буква, которой шифровалась соответствующая буква на клавиатуре. То, какой будет зашифрованная буква, зависело от начальной конфигурации колес.

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

Цифровые шифры

В отличие от шифровки текста алфавитом и символами, здесь используются цифры. Рассказываем о способах и о том, как расшифровать цифровой код.

Двоичный код

Текстовые данные вполне можно хранить и передавать в двоичном коде. В этом случае по таблице символов (чаще всего ASCII) каждое простое число из предыдущего шага сопоставляется с буквой: 01100001 = 97 = «a», 01100010 = 98 = «b», etc. При этом важно соблюдение регистра.

Расшифруйте следующее сообщение, в котором использована кириллица:

110100001001101011010000101111101101000010110100

Шифр A1Z26

Это простая подстановка, где каждая буква заменена её порядковым номером в алфавите. Только нижний регистр.

Попробуйте определить, что здесь написано:

15-6-2-16-13-30-26-16-11 17-18-10-14-6-18

Шифрование публичным ключом

шифр публичным ключом

Алгоритм шифрования, применяющийся сегодня буквально во всех компьютерных системах. Есть два ключа: открытый и секретный. Открытый ключ — это большое число, имеющее только два делителя, помимо единицы и самого себя. Эти два делителя являются секретным ключом, и при перемножении дают публичный ключ. Например, публичный ключ — это 1961, а секретный — 37 и 53.

Открытый ключ используется, чтобы зашифровать сообщение, а секретный — чтобы расшифровать.

Как-то RSA выделила 1000 $ в качестве приза тому, кто найдет два пятидесятизначных делителя числа:

1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350692006139

Как расшифровать код или шифр?

Для этого применяются специальные сервисы. Выбор такого инструмента зависит от того, что за код предстоит расшифровать. Примеры шифраторов и дешифраторов:

  • Азбука Морзе
  • RSA (криптографический алгоритм с открытым ключом)
  • Двоичный код
  • Другие онлайн-дешифраторы

Адаптированный перевод «10 codes and ciphers»

  • Виды легкого и труднораскрываемого шифра: Шифр Августа, кодовая цифра, кодовое слово, пересекающийся код, алфавитный код Бэйкона, нигилист-шифр.

  • Шифр Августа: просто замените каждую букву алфавита на следующую. А превратится в В, В превратится в С и так далее, пока Z не превратится в А.

  • ABCDEFGHIJKLMNOPQRSTUVWXYZ

  • BCDEFGHIJKLMNOPQRSTUVWXYZA

  • По Августовскому шифру фраза Attack at dawn будет записывать как Buubdl bu ebxo.

  • Шифр с использованием ключевого числа: выберите число типа 31, 42 или 58 или какое-либо другое. Предположим, что ваша кодовая цифра – 31. Тогда первая буква в вашем секретном сообщении сдвигается на 3 буквы вперед по алфавиту, а вторая – на одну.

  • При таком шифровании фраза Attack at dawn будет записываться как Duwbfl du gbzo (если ваша кодовая цифра – 31).

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

  • DEATHBCFGIJKL

  • MNOPQRSUVWXYZ

  • В сообщении просто используйте буквы под или над настоящей буквой в алфавите.

  • При таком шифровании фраза Meet me after school будет выглядеть как Dnnp dn nupnb csqaaz

  • Перекрестный метод кодировки: букву можно заменить большим количеством букв.

  • AB CD EF GH IJZ

  • A B C D E KLM

  • F G H I J NOP

  • K L M N O QRS

  • P Q R S T TUV

  • U V W X Y-ZWXY

  • Букву А можно заменить на одну из 12 комбинаций двух букв. Так как АВ находится сверху, а KLM в правой стороне, используйте по одной букве из каждой группы. A может стать AK, AL, AM, KA, LA, MA, BK, BL, BM, KB, LB, или MB. Все зависит от вашего выбора. Выше буквы О (как и других букв колонки справа) расположены буквы IJZ, справа располагаются буквы QRS. Их можно преобразовать в восемнадцать комбинаций из двух букв: IQ, IR, IS, RI, SI, JQ, JR, JS, QJ, RJ, SJ, ZQ, ZR, ZS, QZ, RZ, или SZ. По этому шифру фразу Meet me at noon можно записать одним из множества различных способов, и этих способов больше, чем вы можете сосчитать. Как вариант: Erilmjuj fsjl lbvi shjrqiqg.

  • Алфавитный код Бэйкона:

  • AA BB CC AB AC BC CB CA

  • A a b c d e f g h

  • B i j-k l m n o p q

  • C r s t u v w x y-z

  • В алфавитном коде Бэйкона, как вы уже успели заметить, используется тот же принцип, что и в перекрестной кодировке. Запомните, сначала идет крайняя левая колонка, затем верхняя строка. Соответственно, выходит такое же большое разнообразие комбинаций для одной буквы: BAA, CCC, ACA, BAA, CCA, BBC, CAB, CAA, AAC, CBB, CBC, AAC, BCC, BCC.

  • Нигилист-шифр:

  • 1 2 3 4 5

  • A B C D E

  • F G HI-JK

  • L M N O P

  • Q R S T U

  • V W X Y Z

  • Возьмем слово CAT (количество букв в слове не имеет значения).

  • Сообщение Down with the Czar будет записано по принципу подстановки под него кодового слова:

  • Сообщение: Down with the Czar

  • Ключевое слово: CATC ATCA TCA TCAT

  • Сначала нужно закодировать букву D. Букве D соответствует число 14. Ниже буква С, которой соответствует число 13. Когда вы их сложите, у вас получится 27 – первая цифра закодированного послания. Используя данный шифр, сообщение Down with the Czarбудет выглядеть как 27 45 96 46 63 68

  • 88 36 26 57 68 22 86

  • Шифр заключенного:

  • 1 2 3 4 5

  • A B C D E

  • F G HI-JK

  • L M N O P

  • Q R S T U

  • V W X Y Z

  • Предположим, вы хотите простучать сообщение “Hello” кому-нибудь. Для начала вам нужно найти букву Н на шахматной доске. Слева находится число 2, а сверху 3. Вам нужно постучать 2 раза, выдержать паузу, потом постучать 3 раза. Ваш друг найдет букву Н, расположенную во второй строке и в третьем столбце. Продолжайте процесс, пока не простучите все буквы. По коду заключенных, слово HELLO нужно простучать следующим образом: 2 стука, пауза, 3 стука, пауза, 1 стук, пауза, 5 стуков, пауза, 3 стука, пауза, 1 стук, пауза, 3 стука, пауза, 1 стук, пауза, 3 стука, пауза, и 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 # Английский язык…U R S T O V W X A Z B C M D E F G H J K I L N P 0 Q

  •  Английская буква у означает цифру ноль на языке ящериц.

  •  Имена собственные остаются без изменения при конвертации.

  • В настоящее время можно изменить имена собственные, но сначала нужно поставить слеши ( /) с двух сторон, а затем конвертировать, тогда те, кто читают сообщение поймут, что это имя собственное. Это все.

  • Обродай ожаловатьпай анай иптографиюкрай сай икихаувай! Независимо от того, пишите ли вы записки своим друзьям в классе или пытаетесь постигнуть криптографию (науку о кодах и шифрах) ради интереса, эта статья может помочь вам узнать некоторые основные принципы и создать свой собственный способ кодировки личных сообщений. Прочитайте шаг 1 ниже, чтобы понять с чего начинать!

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

    Метод 1 Коды

    Стандартные коды

    1. 1 Создайте свою собственную книгу кода. Любой полноценный код требует наличия книги кода. Придумайте слова или фразы, замещающие необходимые вам слова или фразы, затем соберите их всех вместе в книге кода, чтобы вы могли поделиться ею с вашими супер секретными друзьями.
    2. 2 Создайте ваше сообщение. Используя книгу кода, аккуратно и внимательно напишите сообщение. Обратите внимание, что соединение вашего кода с шифром сделает ваше сообщение еще более защищенным!
    3. 3 Переведите ваше сообщение. Когда ваши друзья получат сообщение, им понадобится использовать их экземпляр книги кода, чтобы перевести сообщение. Убедитесь, что они знают, что вы используете двойной метод защиты.

    Книга кода

    1. 1 Выберите книгу. При использовании книги кода вы создадите код, обозначающий место нужных слов в книге. Если вы хотите увеличить шансы того, что любое из необходимых вам слов будет в книге кода, то используйте словари или большие справочники путешественника. Вам необходимо, чтобы количество слов, используемых в книге, было большим и относилось к разным темам.
    2. 2 Переведите слова вашего сообщения в цифры. Возьмите первое слово вашего сообщения и найдите его где-то в книге. После этого запишите номер страницы, номер строки и номер слова. Напишите их вместе для замены нужного вам слова. Делайте эту операцию для каждого слова. Вы также можете использовать этот прием для шифрования фраз, если ваша книга кода может предоставить вам нужную фразу готовой.
      • Итак, например, слово на странице 105, пятая строчка вниз, двенадцатое по счету станет 105512, 1055.12 или чем-то похожим.
      • 3 Передайте сообщение. Отдайте зашифрованное сообщение вашему другу. Тому понадобится использовать ту же самую книгу для обратного перевода сообщения.

      Полицейское кодирование

      1. 1 Выбирайте самые популярные фразы. Этот тип кода работает лучше всего, когда у вас есть набор фраз, которые вы используете чаще всего. Это может быть чем-нибудь от простого «Он симпатичный!» до чего-нибудь более серьезного, например, «Я не могу встретиться прямо сейчас».
      2. 2 Подготовьте код для каждой из фраз. Вы можете использовать аналог полицейского кодирования и присвоить каждой фразе номер или несколько букв или использовать другие фразы (как поступают в больницах). Например, вы можете сказать «1099» вместо «Эта линия прослушивается» или вы можете сказать «Я думаю о том, чтобы поехать порыбачить на этих выходных». Использование цифр легче при письме, но использование фраз выглядит менее подозрительно.
      3. 3 Запомните код. Этот тип кодировки работает лучше всего, если вы можете держать в памяти все фразы, хотя наличие книги кода для подстраховки никогда не повредит!

      Метод 2 Шифры

      Шифрование, основанное на дате

      1. 1 Выберите дату. Например, это будет день рождения Стивена Спилберга 16-го декабря 1946 года. Напишите эту дату, используя цифры и косые черты (12/18/46), затем уберите черты, чтобы получить шестизначное число 121846, которые вы можете использовать для передачи зашифрованного сообщения.
      2. 2 Присвойте каждой букве цифру. Представьте, что сообщение «Мне нравятся фильмы Стивена Спилберга». Под сообщение вы напишите ваше шестизначное число снова и снова до самого конца предложения: 121 84612184 612184 6121846 121846121.
      3. 3 Зашифруйте ваше сообщение. Напишите буквы слева направо. Передвиньте каждую букву обычного текста на количество единиц, указанных под ней. Буква «М» сдвигается на одну единицу и становится «Н», буква «Н» сдвигается на две единицы и становится «П». Обратите внимание, что буква «Я» сдвигается на 2 единицы, для этого вам необходимо перескочить на начало алфавита, и становится «Б». Ваше итоговое сообщение будет «Нпё хфёгбущг ъйныфя чукгмсё тсйуексеб».
      4. 4 Переведите ваше сообщение. Когда кто-то захочет прочитать ваше сообщение, все, что ему надо будет знать, так это какую дату вы использовали для кодировки. Для перекодировки воспользуйтесь обратным процессом: напишите цифровой код, затем верните буквы в противоположном порядке.
        • Кодирование при помощи даты имеет дополнительное преимущество, так как дата может быть абсолютно любой. Вы также можете изменить дату в любой момент. Это позволяет обновлять систему шифра гораздо легче, чем при использовании других методов. Как бы то ни было лучше избегать таких известных дат как 9 мая 1945 года.

        Шифрование при помощи числа

        1. 1 Выберите с вашим другом секретное число. Например, число 5.
        2. 2 Напишите ваше сообщение (без пробелов) с этим количеством букв в каждой строчке (не переживайте, если последняя строчка короче). Например, сообщение «Мое прикрытие раскрыто» будет выглядеть так:
          • Моепр
          • икрыт
          • иерас
          • крыто
          • 3 Чтобы создать шифр возьмите буквы сверху вниз и запишите их. Сообщение будет «Миикокереррыпыатртао».
          • 4 Для расшифровки вашего сообщения ваш друг должен посчитать общее количество букв, разделить его на 5 и определить, есть ли неполные строки. После этого он/она записывает эти буквы в колонки, так чтобы было 5 букв в каждом ряду и одна неполная строка (если есть), и читает сообщение.

          Графический шифр

          1. 1 Нарисуйте знаки «решетка» и «+». На листе бумаги создайте основу вашего шифра. Она будет выглядеть, как # и + (поверните знак плюса, чтобы он выглядел как ромб, а не квадрат).
          2. 2 Расставьте буквы по ячейкам. Данные фигуры имеют ячейки между линиями. Заполните эти ячейки двумя буквами алфавита. Размещайте буквы хаотично и не используйте одну и ту же букву дважды.
            • Любой адресат сообщения будет должен иметь такую же копию основы шифра с буквами, для того чтобы прочитать ваше сообщение.
            • 3 Запишите ваш код. Возьмите первую букву вашего сообщения. Найдите ее в основе шифра. Посмотрите на линии, которые вокруг нее. Нарисуйте такие же линии, как и линии, которые образуют ячейки в основе шифра. Если буква, которую вы пишите, является второй в ячейке, добавьте точку к линиям. Проделайте данную операцию для каждой буквы сообщения.

            Перестановка Цезаря

            1. 1 Создайте свой алфавит шифра. Шифр Цезаря перемещает алфавит и затем заменяет буквы их новым номером по порядку. Это делает код более трудным для взлома, если вы меняете расстановку регулярно. Например, 3-х перестановочный шифр будет означать, что А становится Э, Б становится Ю, В становится Я и т.д. Если вы хотите написать «Встречаемся завтра на станции», то сообщение будет выглядеть «Яопнвфэвйоь еэяпнэ кэ опэкуёё».
              • Существует много вариантов изменения порядка алфавита перед созданием кода. Это делает шифр более надежным.
              • 2 Запишите ваше сообщение. Наличие помощника, как декодирующий круг, может сделать это проще, если вы сможете подготовить такое, которое будет подходить вашему коду.
              • 3 Переведите сообщение. Человек, расшифровывающий ваш код, должен знать только число, чтобы правильно восстановить алфавит. Регулярно меняйте его, но убедитесь, что вы можете безопасно передать адресату, что будет новым числом сдвига алфавита.

              Метод 3 Секретные языки

              Путаный язык

              1. 1 Определите слова, которые начинаются с гласных. Если есть такие, просто добавляйте «ай» на конце слова. Например, «ухо» станет «ухоай», «арка» станет «аркаай» и «оскорбление» станет «оскоблениеай».
              2. 2 Определите слова, которые начинаются с согласной. Если есть такие, то перенесите первую букву слова в конец и добавьте «ай». Если в начале слова стоят две (или более) согласных, переставьте их в конец и добавьте «ай».
                • Например, «труп» станет «уптрай», «грамм» станет «аммграй» и «мысль» станет «ысльмай».
                • 3 Говорите на путаном языке. Путаный язык работает лучше всего, если на нем говорить быстро, но для этого потребуется некоторое время подготовки. Не прекращайте практиковаться!

                Звуковой код

                1. 1 Создайте свой звуковой код. Этот код будет работать также как и азбука Морзе. Вам будет нужно присвоить звуковой ритмичный код каждой букве или отдельному слову. Выберите ритмы, которые вы можете запомнить.
                2. 2 Научите вашему коду других. Код должен быть всегда в памяти, поэтому научите коду всех, с кем планируете его использовать.
                3. 3 Простучите ваше сообщение. Используйте ваши пальцы, конец карандаша или другой инструмент для передачи вашего сообщения. Старайтесь быть скрытными. Вам не надо, чтобы кто-то догадался, что вы общаетесь.

                Тарабарский язык

                1. 1 Научитесь говорить на тарабарском языке. Тарабарский язык – языковая игра наподобие путаного языка, но звучит более сложно. Короткое объяснение – вам надо добавлять «-отаг» (или любой аналог)перед каждой гласной в слоге. Это гораздо хитрее, чем звучит на самом деле! Вам потребуется практика, чтобы в совершенстве овладеть этим кодом.

                Советы

                • Прячьте ваш код в том месте, о котором знают только отправитель и получатель. Например, развинтите любую ручку и положите ваш код внутрь нее, соберите ручку обратно, найдите место (например, подставка под карандаши) и сообщите получателю место и тип ручки.
                • Шифруйте также и пробелы, чтобы запутать код еще больше. Например, вы можете использовать буквы (Е, Т, А, О и Н работают лучше всего) вместо пробелов. Они называются пустышками. Ы, Ъ, Ь и Й будут выглядеть слишком явными пустышками для опытных взломщиков кодов, поэтому не используйте их или другие выделяющиеся символы.
                • Вы можете создать свой собственный код, переставляя буквы в словах в случайном порядке. «Диж яемн в крапе» — «Жди меня в парке».
                • Всегда отправляйте коды агентам с вашей стороны.
                • При использовании турецкого ирландского вам не нужно специально использовать «эб» перед согласной. Вы можете использовать «иэ», «бр», «из» или любую другую неприметную комбинацию букв.
                • При использовании позиционной кодировки, не стесняйтесь добавлять, удалять и даже переставлять буквы с одного места на другое, чтобы сделать дешифровку еще более трудной. Убедитесь, что ваш партнер понимает, что вы делаете, или все это будет бессмысленным для нее/него. Вы можете разбить текст на части так, чтобы было три, четыре или пять букв в каждой, а затем поменять их местами.
                • Для перестановки Цезаря вы можете переставлять буквы на любое количество мест, которое вы хотите, вперед или назад. Только убедитесь что правила перестановок одинаковы для каждой буквы.
                • Всегда уничтожайте расшифрованные сообщения.
                • Если вы используете свой собственный код, не делайте его слишком сложным, чтобы остальные не смогли его разгадать. Он может оказаться слишком сложным для расшифровки даже для вас!
                • Используйте азбуку Морзе. Это один из самых известных кодов, поэтому ваш собеседник быстро поймет, что это.

                Предупреждения

                • Если вы пишете код неаккуратно, то это сделает процесс декодирования более сложным для вашего партнера, при условии что вы не используете вариации кодов или шифров, созданные специально, чтобы запутать дешифровальщика (за исключением вашего партнера, конечно).
                • Путаный язык лучше использовать для коротких слов. С длинными словами он не настолько эффективен, потому что дополнительные буквы гораздо более заметны. То же самое при использовании его в речи.

                Что вам понадобится

                • Партитура для кода
                • Карандаш
                • Бумага
                • Любая дата

                Шифр — какая-либо система преобразования текста с секретом (ключом) для обеспечения секретности передаваемой информации. Прочитав определение из википедии , конечно можно понять что такое шифр , но все же не до конца. Что-бы понять что же делает шифры таким особенным , популярным , а чаще всего и жизненно-важным , в первую очередь надо что-нибудь зашифровать.

                В цикле статей под название “Создание своего метода шифрования”, эта статья будет вводной. Здесь мы рассмотрим отличие шифров от кодов и выберем 2 шифра, которые в дальнейшем мы будем использовать для создания своего шифра.

                Отличие шифров от кодов

                Если не вдаваться в глубокие подробности, то ответ очень прост. Представьте себе обычную телефонную книгу. Представили? Телефонная книга и есть своего рода кодовая книга. Если вы будете записывать фамилии и имена ваших друзей на обычный листок то получится текст , а если вместо их ФИО использовать номера их телефонов то получится уже закодированное послание. Такое послание сможет понять только тот человек, который знает, что при составлении этого текста вы использовали телефонную книгу. И раскодировать этот набор цифр он сможет только при помощи такой же телефонной книги. Очевидным минусом кодов , является их “стабильность”. При попадании кодовой книги к тому , от кого вы свое послание прятали , ваш код будет больше не способен обеспечить скрытность переписки.

                Выбор шифров для скрещивания

                Ну что ж вот и основная часть статьи. Не буду откладывать в долгий ящик и расскажу какие шифры мы будем использовать. Шифр Вижинера и Квадрат Полибия.

                Квадрат Полибия

                Чуть выше я писал, что код намного менее универсален и порой менее устойчив к взлому. Но квадрат Полибия это код простой замены, причем очень древний код. Так почему же , если он такой простой использовать мы будем его ? Как раз потому что он такой простой , уж простите за тавтологию. Работу с данным шифром разделим на несколько стадий :

                1. Выбор языка алфавита для таблицы
                2. Определение размерности таблицы
                3. Формирование таблицы
                4. Шифрования

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

                1 2 3 4 5 6
                1 А Б В Г Д Е
                2 Ё Ж З И Й К
                3 Л М Н О П Р
                4 С Т У Ф Х Ц
                5 Ч Ш Щ Ъ Ы Ь
                6 Э Ю Я

                Для шифрования на квадрате находили букву текста и вставляли в шифровку нижнюю от неё в том же столбце. Если буква была в нижней строке, то брали верхнюю из того же столбца.

                Буква текста: а р б у з
                Буква шифротекста : ё ш ж з н

                Шифр Вижинера

                Данный шифр тоже далеко не новый , но взломать его (официально )не могли целых 200 лет. Шифр Вижинера это поли алфавитный шифр , да к тому же еще с ключевым словом.

                Попробуем зашифровать слово PENSIL. Ключевым словом будет слово MEN.

                P E NS I L MENMEN

                Ключевое слово будем писать циклично до конца текста. Потом Используя таблицу выше , будем искать и находить символы на перекрестиях буквы из текста и буквы из кодового слова. Если все правильно зашифровать то должно получиться слово — BIAETY.

                Объединения шифра Вижинера и квадрата Полибия

                1 2 3 4 5
                1 А Б В Г Д
                2 Е Ж З И К
                3 Л М Н О П
                4 Р С Т У Ф
                5 Х Ц Ч Ш Щ
                6 Ы Э Ю Я
                л и м о н
                м А Б В Г Д
                у Е Ж З И К
                з Л М Н О П
                ы Р С Т У Ф
                к Х Ц Ч Ш Щ
                а Ы Э Ю Я

                Вот так просто мы и объединили два шифра. Полученный текс расшифровать гораздо сложнее чем обычный шифр Полибия. Правда в стойкости примененный шифр проигрывает шифру Вижинера , так как является одно алфавитным. Однако новый принцип существенно легче и проще для повседневного использования, или шифрования не очень важной информации.

                Что-же дальше ? А дальше , для того чтобы не тратить драгоценное время на шифрование в ручную , мы напишем программу на языке C#.

                Все мы довольно часто слышим такие слова и словосочетания, как «шифрование данных», «секретные шифры», «криптозащита», «шифрование», но далеко не все понимают, о чем конкретно идет речь. В этом посте разберемся, что из себя представляет шифрование и рассмотрим элементарные шифры с тем расчетом, чтобы даже далекие от 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.

                По этим правилам, шифруем все сообщение.

                Если убрать пробелы, то получим следующее зашифрованное сообщение:

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

                Добавить комментарий