Итак, теперь ты понимаешь, что для тех, кто умеет пользоваться двоичной системой счисления, «круглые» числа — это не 10, 100, 1000 и далее, а числа, которые в десятичной системе записываются так: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 и т. д. Запомни эти числа, они, можно сказать, «волшебные». Например, их очень часто используют программисты. Есть даже такой анекдот: программисты думают, что в километре 1024 метра, а в килограмме 1024 грамма, поскольку в килобайте — 1024 байта. И в этом есть доля правды: число 1024 в двоичной системе счисления записывается как единица с десятью нулями: 10000000000. (Это абсолютно «круглое» число: даже число его нулей — 10 — является круглым как в десятичной, так и в двоичной записи).
Есть и ещё одна шутка:
Вот тут необходимо остановиться и запомнить новый термин. Ты уже давно знаешь, что такое «цифра». Так вот двоичные цифры, то есть 0 и 1, называются
Теперь вспомни, что мы договорились использовать в нашем специальном алфавите (который ввели на прошлой неделе) ровно 32 символа. Теперь ты понимаешь, почему на прошлой неделе я выделил слово «ровно»? Число 32 действительно «ровное» или «круглое», поскольку в двоичной системе счисления для его записи используется число 100000. Что это значит для нас? То, что для двоичного представления любого символа из нашего алфавита требуется пять двоичных цифр. Единственное, о чём нужно договориться: мы всегда будем использовать именно пять цифр, даже если в начале числа надо ставить нули: 00100, 01011 и т. д.
Таким образом можно закодировать все символы нашего алфавита от пробела до буквы «Я». Все они получают номер от 0 до 31 в десятичной системе счисления и код от 00000 до 11111 в двоичной. Вот интересная таблица, которую я рекомендую тебе выучить наизусть:
Это достаточно простое кодирование. По сути, это шифр одноалфавитной замены, то есть код, не скрывающий тайную информацию. Но что нам это даёт?
Давай вновь обратимся к полученному сообщению. Итак, в нём использованы обычные и жирные буквы. Что, если обычная буква обозначает «0», а жирная — «1»? Надо попробовать декодировать шифр таким способом. Если подставить цифры 0 и 1 вместо обычных и жирных букв, то получится вот такая кодограмма (я сразу же разделил
00010 00110 10001 00110 00100 01001 10010 11011 00000 00010 00001 00010 10100 11001 01011 10100 00000 01111 01110 00001 00000 01001 01110 01111 10000 01100 00001 01110 00110 10011 11111 01110 01011 00001
Оставляю тебе возможность потренироваться в раскодировании текста. Тем более что здесь его не так уж и много.
Чему же мы научились на этой неделе? Мы научились очень важной вещи. Оказывается, можно скрывать информацию в другой информации так, что найти её сможет только тот, кто знает, как искать. Это как спрятать иголку в стоге сена. Более того, в стогу вообще мало кто будет искать иголку! Добиться этого — и есть основная задача
Фрэнсис Бэкон — английский философ, историк, политик. Создал метод кодирования и сокрытия информации, из-за которого в дальнейшем произошло множество интересных случаев с поиском скрытых сообщений там, где их нет. Например, последователи этого метода пытались доказать, что все пьесы Уильяма Шекспира на самом деле были написаны Бэконом.
Ещё мы можем сделать вывод, что любое свойство, которое позволяет разделить буквы на два класса, можно использовать для сокрытия информации таким способом. Например, можно использовать заглавные и строчные буквы. Можно использовать чёрные и красные буквы. Можно, наконец, использовать не только обычное и жирное начертание, но и обычное и курсивное. Можно придумать ещё много всяких вариантов деления букв на два типа. К тому же при использовании нескольких способов деления вполне можно спрятать в одном и том же тексте несколько разных тайных сообщений. Например, одновременно использовать обычные и жирные буквы и заглавные и строчные буквы.