Шифры и квесты: таинственные истории в логических загадках - Роман Душкин
Шрифт:
Интервал:
Я сказал:
– Предлагаю устроить соревнование. Сфотографируй таблицу, чтобы она у тебя тоже была. И каждый из нас применит этот метод, а завтра сравним результаты. Идёт?
Марк опять кивнул. На этом мы и расстались.
Пока я шёл домой, а это всё-таки был неблизкий путь, у меня в голове вертелась мысль о том, что негоже сыну математика использовать тупой переборный метод взлома, который к тому же не гарантирует обнаружения правильного ключа. Надо придумать что-то более хитрое и интересное. Но что?
Внезапно окружающий мир дал подсказку. Я обратил внимание на то, что многие дома на улице покрашены в разные цвета. И время от времени цвета повторялись. Часто использовался голубой цвет. Реже зелёный, ещё реже светло-бурый. Пока я шёл, мне дважды попались пары домов, которые шли друг за другом – сначала голубой, а сразу вслед за ним зелёный. Тут дома в моей голове превратились в буквы, и я всё понял. Я ускорил шаг, а потом побежал.
Когда я прибежал к дому, на крыльце стоял дед Трофим и пристально смотрел в мою сторону. Увидев меня, он воскликнул:
– А, вот и ты! Ты опять опоздал. Давай быстро обедать, а то всё остынет.
Я только махнул рукой и припустил в свой штаб. Там я взял шифровку и уже спокойным шагом пошёл в дом, чтобы поесть и собраться с мыслями.
Дед Трофим посмотрел на шифровку, которую я принёс, и сказал, что это всё ерунда и кибернетика. Я вспомнил его разговор с папой насчёт этого и ухмыльнулся. Потом сказал, что в этом хаотичном наборе букв должны быть повторы, и их надо найти. Дед Трофим возразил, что он мне тут не товарищ, поскольку даже в очках ничего не разберёт – папа, как обычно, писал всё очень мелко.
Я быстро поел и стал оформлять свои мысли. Их действительно надо было привести в порядок, чтобы начать использовать тот метод, который подсказали мне дома на улице. Итак, в тексте надо искать повторы. Зачем? Всё дело в том, что есть ключ, который использовался для выбора алфавита замены циклично. А это значит, что иногда в достаточно большом тексте будут происходить такие ситуации, когда ключ будет накладываться на одинаковые буквосочетания в шифруемом тексте. Не секрет, что в русском языке много повторяющихся буквосочетаний. Например, «ОЛО» и «ОРО». Вполне может так случиться, что ключ совместится с ними идентично, и тогда в шифровке должны получиться одинаковые сочетания букв. Их-то и надо искать.
Что это даст? Позиции таких повторов будут указывать на цикличность применения ключа. Другими словами, если взять два повтора и посчитать, на каких местах в шифровке они стоят, то разница между этими местами должна делиться на длину ключа. Если взять несколько разных повторов и посчитать несколько разниц, то для определения длины ключа надо будет просто подсчитать наибольший общий делитель.
Этот метод показался мне безупречным. Единственно смущала возможность получения в качестве наибольшего общего делителя единицы, а ключа длиной в один символ тут быть не может, я уже это доказал. Похоже, что этот метод не совсем математически точен. Впрочем, объяснение может быть простым. Несколько разных буквосочетаний в шифруемом тексте могут наложиться на разные позиции в ключе, а в результате получатся одинаковые последовательности символов в шифрограмме. Это возможно, хотя становится очень неправдоподобным, если выбирать повторы длиннее. Так я понял, что надо искать максимально длинные повторы.
Я взял шифровку и стал смотреть на неё. Повторы виднелись сразу, но они состояли из двух и из трёх букв. Я посчитал это недостаточным. Надо больше. Хорошо, что буквы были печатными и по ширине практически одинаковыми. Это натолкнуло меня на мысль о том, что в листе бумаги можно вырезать окошко шириной в нужное количество букв, после чего двигать его по тексту и смотреть на видимые сквозь него символы. Я решил начать с длины в четыре буквы. Действительно, при помощи вырезанного окошка в листе бумаги было очень удобно отсекать массу ненужной и отвлекающей информации. Но вот сложно было удержать в голове огромное количество четырёхбуквенных сочетаний. Это действительно было очень непросто. Но я не унывал и продолжал двигать окошко. Дед Трофим только изумлённо смотрел на мои упражнения.
У меня получилось найти два повтора. Первый – сочетание «ШМИГ», которое было в тексте три раза. Второе сочетание, которое я нашёл, было «ВЕЖА», оно встречалось дважды. Думаю, что есть ещё много, но эти найти было просто, поскольку сочетания напоминали обычные слова, и их было легко запомнить. Что ж, это неплохо. Посмотрим…
Сочетание «ШМИГ» встретилось в шифровке на 476, 506 и 571 позициях. А сочетание «ВЕЖА» нашлось на 232 и 637 позициях. Я подумал, что для сочетания «ШМИГ» можно использовать все три позиции, чтобы получить три разницы. Вот что вышло:
506 – 476 = 30
571 – 476 = 95
571 – 506 = 65
637 – 232 = 405
Хмм… Это интересно. Сразу видно, что все эти числа делятся на 5 без остатка. Думаю, что длина ключа найдена. Я посмотрел на часы. С момента, когда я начал, прошло примерно два часа. Честно говоря, я уже немного устал, но решил попробовать ещё. Несмотря на физическую усталость и рассеянное внимание из-за поисков повторов, я был захвачен идеей. Надо попробовать. Проверю гипотезу о длине ключа в пять символов ещё одним повтором, и тогда всё. На этот раз я решил вырезать новое окошко длиной пять букв.
Минут двадцать или даже больше я безрезультатно водил по шифровке и наконец нашёл сочетание «ГОПЦК». Оно находилось на 209 и 609 позициях. Очевидно, что разница этих двух чисел делится на 5. Гипотеза была вновь подтверждена. Я снял окошко с текста и снова посмотрел на всю шифровку. И внезапно я увидел, что буквосочетание «ГОПЦКМА» повторяется дважды. То есть я случайно нашёл сочетание из семи букв. Тут уж у меня больше не было сомнений – ключ состоял из пяти символов.
На часах было уже восемь, когда я получил длину ключа. Разум мой ликовал, это было невероятное чувство. Ведь получается то, что я не воспользовался тем методом, который предложил Марку с самого начала, то есть подбором, а разработал что-то новое и более математическое. Это просто великолепно.
На радостях я прошёлся до берёзок и обратно. Свежий вечерний воздух несколько взбодрил меня, и я отдохнул. Но голова всё ещё гудела, поэтому я прогулялся второй раз, а потом и третий. После этого я был готов приступить ко второй части. Теперь нужно было взять всю шифровку и разбить на пятёрки символов, после чего подсчитать количества и найти самые часто встречающиеся буквы. Я решил не считать количества всех букв, а просто зрительно оценить, какие буквы встречаются чаще всего.
Я вернулся на терраску и переписал шифровку в виде длинного столбца шириной в пять символов. Получилось вот что:
Поделиться книгой в соц сетях:
Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!