Для примера давай вернемся к паре чисел, что мы рассматривали немного выше. Возьмем результат выполнения над ними операции XOR (10010), и теперь применим к нему эту операцию с тем же самым числом 11011:
Что получилось? Правильно, первое число — 01001.
Это важное свойство обратимости результата постоянно используется в криптографии. Давай посмотрим почему.
Напомню, что на прошлой неделе мы ввели новый алфавит, состоящий из тридцати двух символов, включая пробел. Каждому символу было сопоставлено пятизначное двоичное число от 00000 до 11111. Собственно, после этого уже было все понятно: мы же можем применять к кодам символов операцию XOR! Действительно, такое применение — просто другой способ использования шифра подстановки. Но этот способ намного проще: не надо искать соответствия в таблицах, а можно просто применить операцию XOR. Причём и для шифрования, и для расшифровки необходимы одинаковые действия.
Давай рассмотрим этот процесс на примере. Пусть нам необходимо зашифровать слово «ОГОНЬ». В качестве ключа возьмём единственную букву «Р». Вот что получится:
Так из слова «ОГОНЬ» получилось слово «ЮФЮЯЙ». Расшифровка происходит таким же образом:
Математически это можно записать так: «ОГОНЬ ⊕ РРРРР = ЮФЮЯЙ» и «ЮФЮЯЙ ⊕ РРРРР = ОГОНЬ». Как ты понимаешь, сейчас мы использовали просто шифр подстановки с одноалфавитной заменой. Это неинтересно. Интересно здесь то, что шифрование и расшифровка происходят при помощи одного и того же действия.
Теперь рассмотрим иной пример. Пусть нам опять надо зашифровать слово «ОГОНЬ», но теперь в качестве ключа мы будем использовать слово «МАГИЯ». Что получится? А вот что:
Абсолютно так же производится расшифровка:
Получается, что мы теперь можем «складывать» друг с другом целые слова: «ОГОНЬ ⊕ МАГИЯ = БДКЖГ». Это действительно какая-то магия. Только что мы при помощи этой прекрасной операции XOR применили шифр многоалфавитной замены, который изучали на второй неделе. Одна и та же операция позволяет применять сразу два шифра, которые мы уже изучили. Это прекрасно!
Само собой разумеется, этот процесс можно упростить. Ведь очевидно, что результат применения операции XOR никогда не меняется. Поэтому можно запросто составить таблицу вроде той, которую мы сделали на второй неделе, только теперь в ячейках на пересечении строк и столбцов будут буквы, получающиеся в результате применения операции XOR. Вот такая таблица получается: (см. на следующем развороте).
У этой таблицы много примечательных свойств. Если ты внимательно её изучишь, то найдёшь в ней разнообразные закономерности. Обрати, например, внимание на то, как в таблице располагаются буквы А, В, Ж, О и Я, а потом посмотри на их двоичное представление. И таких узоров в ней большое количество. Это — следствие разных свойств, которыми обладают двоичные числа и двоичная система счисления.
Теперь давай потренируемся. Итак, у тебя есть послание следующего вида:
«ПРИВеТ МОЙ ДороГОй ДРУГ СеГОдНЯ Я хОЧу РАССКаЗаТь ТЕбе оДну ЗаниМАТеЛьНуЮ ИстоРию КОТОрАЯ СлучилАСЬ сО МНоЙ мНого Лет НАзад КоГДА я бЫЛ Ещё СОвСем мАЛЕНьким Я ТоГдА Жил в ДаЛёкОй ДЕРевНЕ и БЫл нАмноГо БЛИЖЕ к пРИрОДе чем СЕЙЧАс и ВоТ Однажды я шёл по лесу и увидел за деревьями яркий красный свет также было слышно странное жужжание подкравшись поближе я увидел марсиан».
Как ты уже понимаешь, на самом деле здесь два текста. Первый текст — это «обманка», призванная затуманить секрет. Странная история про марсиан. На самом-то деле скрытое послание закодировано в размере букв. Так как конец текста полностью состоит из строчных букв, можно предположить, что именно строчная буква обозначает бит 0. А заглавная буква, соответственно, обозначает бит 1. Если ты тщательно проделаешь операцию декодирования, то должно получиться следующее:
Читать дальше
Конец ознакомительного отрывка
Купить книгу