Создание своего метода шифрования

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

В цикле статей под название “Создание своего метода шифрования”, эта статья будет вводной. Здесь мы рассмотрим отличие шифров от кодов и выберем 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#.

Продолжение: часть 2 и часть 3.

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