Перейдя в «Стратопорт», я прошел на свое место 9-В, задернул шторку и сразу занялся компьютером. Вид матрицы на индикаторе нагонял тоску. Передо мной был код, который никак нельзя назвать однозначно декодируемым. Я понятия не имел, каким образом разбить эту последовательность кодовых символов на кодовые слова, да еще так, чтобы разбиение оказалось единственно верным. Но отступать некуда.
Для начала я прогнал матрицу через те криптоаналитические программы, которые мог припомнить: подстановочная программа, перестановочная программа, шифр Цезаря, шифр Тритемиуса…
Маловато. Конечно, у моего компа огромные возможности, но я-то почти полный профан в криптоанализе. Напрягшись, припомнил правила кодирования по Хеммингу, но и тут незадача: откуда мне знать длину кодового слова в той шифровке, что скучно светилась на индикаторе. Я поиграл немного с компом, перебрав длины 3, 4, 5, 6, 7, 8, и понял, что зашел в тупик.
Надо мной замаячил призрак Клода Шеннона, отца теории информации. Он давным-давно показал, как можно построить криптограмму, которая не поддается расшифровке, если, конечно, не известен способ ее составления. И все же я продолжал игру. Наверное, во всей последующей истории главную роль сыграло именно то, что я — полный профан в криптоанализе. Ну и еще уязвленное самолюбие: я не мог себе простить, что я не знаю, с какого конца подобраться к криптограмме. И решил брать ее в лоб. А мой дилетантизм побудил меня задуматься над формой матрицы.
До сих пор я свято полагал, что матрица кода должна быть строго квадратной, — не иначе как отголоски почти забытого университетского курса матричной алгебры. Действительно, квадратную матрицу удобно транспонировать, или если хотите проще, то симметрично преобразовать относительно диагонали. Но кто сказал, что в моем случае вообще требуется транспонирование?
Коль скоро передо мной прямоугольная матрица, размышлял я, да еще с хвостиком, это непорядок. Ее надо преобразовать так, чтобы остался квадрат, а хвостик исчез. На верную дорогу я вышел случайно; принципиально же это в корне неверно и могло увести меня неведомо куда.
Я сосчитал число знаков в строке — их было тридцать два — и решил сжать матрицу, объединив знаки по два. То есть разбил текст на кодовые слова с длиной два. Но в двоичном коде двумя знаками можно записать лишь четыре цифры — 0(00), 1(01), 2(10) и 3(11).
Таким образом я перевел получившийся текст в четвертичную систему; теперь он выглядел так:
Матрица осталась прямоугольной, но она была вытянута уже по вертикали. И вот какая штука: во всей матрице не было ни единого пуля. Я счел это добрым знаком, потому что из полной неразберихи начала проглядывать какая-то система…
Навязчивая идея о квадратной матрице преследовала меня. Недолго думая, я разделил криптограмму на две неравные части: вверху остался квадрат из 256 (16х16) знаков, а внизу — прямоугольная таблица с корявым хвостом.
Уже час я находился на борту «Стратопорта», а решение задачи даже не забрезжило. Но с мертвой точки дело сдвинулось: неверной дорожкой я как-то приближался к цели. Только минут через сорок меня осенило: нижняя часть может оказаться ключом к верхней. А вдруг передо мною редкий код с переменной длиной кодового слова? Тогда указание на то, как варьировать длину, надо искать в самой криптограмме.
Предположим, что длина меняется от 1 до 3 и нижняя часть матрицы — это запись длин, а четвертичный код выбран для того, чтобы затруднить работу дешифровщика: в этой криптограмме и основной текст, и ключ записаны всего тремя цифрами, и не так-то просто распознать, что есть что. К тому же кодовый текст выглядит абсолютно бессмысленным, и отличить префиксы кодовых слов, отделить слова друг от друга на первый взгляд невозможно.
Я попробовал прочитать квадратную матрицу с помощью ключа; его образ наполнился у меня буквальным содержанием — хвостик превратился в «бородку». В ключе первая цифра была 1 — значит, первое кодовое слово состоит из одной цифры — единицы. Вторая цифра ключа — двойка, поэтому второе слово матрицы содержит два знака, то есть 12. И так далее.
В конце концов из квадратной матрицы получилось.
И теперь у меня не осталось никаких сомнений: передо мной типичная! простейшая! примитивнейшая! подстановочная криптограмма. Классика литературы: «Золотой жук» Эдгара По. Такой орешек мой компьютер расколет мгновенно. Я ввел программу частотного анализа и откинулся на спинку кресла. Сейчас я увижу текст.
И текст появился. Передо мной была абракадабра, начинавшаяся строчкой prefabyemenaepebmow…
Через несколько минут, проклиная себя за нечеткое знание американских и британских военных аббревиатур, я разбил текст на слова: Prefab Yemen AE PEB mow…