Чем заняться летом? Сделать шифрквадрат!

Чем заняться летом? Сделать шифрквадрат!

Играть в шпионов, зашифровывать и расшифровывать любят все! Уж какие только шифровки не использовали мы летом! Сегодня рассказ про шифрквадрат.

Статья предоставлена Марией Хомсен, за что ей огромная благодарность!

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

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

Наши союзники в борьбе с Ноттингемским шерифом, два таких же энтузиаста, живущих на другом конце дачного поселка, вечером пришли и прочли его. Предварительно зайдя к Мите за скалк…за скиталой. Другой бабушки со скиталой такого диаметра не нашлось. Кончилось всё так себе. На следующий день бабушка застала нас в момент написания нового послания. Ладно, немного   она (скитала, не бабушка) действительно испачкалась, мы ее на грядке клубничной забыли, но не такая уж и черная была, писать сообщения на ней нам это совершенно не мешало. А вареники — это мелочи, и без вареников можно прекрасно прожить и без пирога яблочного тоже. Это Митя пытался объяснить бабушке. Но бабушка не вняла и сказала, что теперь «скитала» в семье будет только одна — это Митя. Пусть  идет себе и скитается, потому что удерживать в семье человека, который у родной бабушки способен стащить родную скалку, никто не будет. И мы остались и без скиталы, и без вареников, и без яблочного пирога (надо сказать, что через неделю Мите уже не казалось, что это необязательные в жизни вещи).

И мы потонули в ней по уши. Как всякий человек, которому абсолютно нечего скрывать, Митя считал, что это «нечего скрывать» должна быть зашифровано так, чтобы никто и никогда (впрочем, он и про шифр Цезаря говорил тоже самое). И поэтому как он только над этим квадратом не издевался и каких только комбинаций не придумывал. Описывать их здесь я не буду, напишу базовый вариант, дальше сможете двигаться сами. Но вообще штука очень интересная именно с точки зрения математики и поиска закономерностей. Да, и предваряя вопрос, скажу, Митя выбрал самую близкую к криптографию профессию, он стал филологом. Перейдем к практике?

Но Митю оказалось не так просто сбить с пути. Хорошенько отдохнув на прополке грядок и вернув в рацион яблочные пироги (бабушка сменила гнев на милость), он принялся за старое. Из примечательного — придумал невидимые чернила. То есть они становились невидимыми, когда высыхали и листок выглядел пустым. И никто бы, конечно, не догадался, что с листком что-то не так, если бы от листка не разило бабушкиными сердечными каплями в радиусе километра. Дальше был шифр Цезаря, это было уже в школе, и сообщения прочитала Митькина учительница (никто не ожидал такого криптографического коварства от русички). И тут Мите попалась книга «Архимедово лето» Боброва.

Объяснение, как создать такой квадрат, есть во многих сборниках задач и научно-популярных книгах по математике. Но вопросы все равно остаются. Недавно объясняла подробно и подумала, что пусть будет здесь, как вспомогательный материал к книге, чтобы можно было дать ссылку.

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

Итак, рисуем квадрат 8 на 8. И делим его на клетки.

_1

Всего 64 клетки. Значит, мы сможем записать сообщение не длиннее, чем 64 буквы (знаки препинания мы не пишем, заглавные буквы тоже).

Пронумеруем стороны нашего квадрата.

_2

И разделим его на 4 части, то есть на 4 квадрата размером 4 на 4. Сколько клеток у нас будет в каждом квадрате? Правильно —  16 клеток.

_3

Раз у нас в каждом квадрате 16 клеток, следовательно, мы можем вписать в него 16 чисел. Есть несколько способов это сделать, мы пока возьмем способ, который называется «спираль», об остальных поговорим чуть позже.

Заполняем первый квадрат. Буква Б показывает нам как поворачивается «текст».

_4

Заполняем по спирали, так, как указано стрелками.

Получаем:

_5

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

_6

И что мы получим в итоге? Квадрат, где все цифры в разном направлении? С ним будет тяжело работать. Поэтому мы повернем его, поставим точку там, где у нас будет единица, повернем назад (так чтобы единица была сверху) и заполним по спирали.

_7

И получим:

_8

Повторяем то же самое для двух остальных квадратов. Поворачиваем, чтобы Б была в нормальном положении, отмечаем, где будет единица, возвращаем в исходное положение (когда единица наверху) и заполняем по спирали.

Отметили точку.

_9

Заполнили. И отметили точку уже в четвертом квадрате. Тоже заполнили.

_10

И вот итог:

_11

Теперь в каждом из наших квадратов 4 на 4 мы выберем 4 числа, которые станут нашими шифровальными ячейками. То есть всего таких чисел будет 16. По четыре в каждом квадрате. Числа можно выбирать разными способами, но чтобы не получилось большого скопления шифровальных ячеек в одном месте, числа можно разместить по ходу шахматного коня, как это сделано в книге Боброва. Хотя возможен другой порядок, главное, числа не должны повторяться. То есть если в первом квадрате мы взяли 1, 6 ,9, 14, то мы уже не имеем права взять их во втором, третьем и четвертом квадрате.

Чтобы не запутаться, числа лучше вычеркивать. Вот так.

_12
_13
_14
_15
_16
_17
_18
_19
_20
_21
_22
_23

И теперь мы видим, что у нас остался последний квадрат и четыре свободных числа. Их и берем.

_24

Наш квадрат готов. Ниже мы рассмотрим, как обойтись без вырезания ячеек, но, чтобы было понятно, как работает квадрат, рассмотрим вариант с вырезанием тоже (но наша задача, научиться работать БЕЗ ВЫРЕЗАНИЯ).

Итак, вырезаем все закрашенные ячейки. И рисуем квадрат 8 на 8 на другом листке в клетку. Получаем:

_25

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

_26

Для зашифровки возьмем Пушкина (немного изменив, чтобы было 64 буквы).

Жил старик со своею старухой, жил тридцать лет и три года, но не было у них корыта.

Ставим квадрат в положение 1 (единица сверху) и начинаем вписывать текст (в этом положении мы можем вписать 16 символов), можно сразу разделить текст на группы по 16 символов. Буквы каждой позиции написаны разным цветом, чтобы можно было посмотреть, как заполняется квадрат.

_27

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

_28

Ставим квадрат в положение 2 (двойка сверху) и начинаем вписывать текст (в этом положении мы можем вписать еще 16 символов (букв).

_29

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

_30

Ставим квадрат в положение 3 (тройка сверху) и начинаем вписывать текст (в этом положении мы можем вписать еще 16 символов).

_31

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

_32

Ставим квадрат в положение 4 (четверка сверху) и начинаем вписывать текст (в этом положении мы можем вписать последние 16 символов).

_33

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

_34

Можем провести линии, чтобы было нагляднее.

_35

Мы зашифровали наш текст.

Но как мы уже говорили выше, наша задача обойтись БЕЗ ВЫРЕЗАНИЯ.

Рассмотрим, как это можно сделать.

Представим, что мы ничего не собираемся вырезать (ведь мы вырезали, просто чтобы понять принцип работы), и что мы остановились на этом этапе.

_36

В принципе, все числа мы выбрали и теперь нам ничего не мешает пользоваться просто этой картинкой. Но для удобства можно сделать так. Мы нарисуем два пустых (без цифр) квадрата 8 на 8. И в одном из них укажем ячейки, в которых нам «разрешено» писать, раскрасим их оранжевым цветом. И глядя на них, во втором квадрате будем записывать наш текст. Квадрат с отмеченными ячейками мы будем поворачивать, как мы уже делали, чтобы он был в позиции 1-2-3-4.

_44

Например, в первой позиции в первой строке, мы имеем право писать в первой и пятой ячейке (считая слева направо). Во второй строке мы имеем право писать в третьей и восьмой ячейке (считая слева направо).

_38
_39
_40
_43
_41

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

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

Например, 1 строка число 10001000. Почему? Потому что в этой строке выделены (или вырезаны) первая и пятая ячейки. Это единицы. Остальное нули. Переведем это число в десятичную систему — это 136.

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

Это, конечно, не единственная интересная вещь в книге Боброва, но рассмотреть все закономерности сразу не получится. Но книга замечательная, и ее как раз переиздали.

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