Встреча | страница 28
До сих пор я свято полагал, что матрица кода должна быть строго квадратной, — не иначе как отголоски почти забытого университетского курса матричной алгебры. Действительно, квадратную матрицу удобно транспонировать, или если хотите проще, то симметрично преобразовать относительно диагонали. Но кто сказал, что в моем случае вообще требуется транспонирование?
Коль скоро передо мной прямоугольная матрица, размышлял я, да еще с хвостиком, это непорядок. Ее надо преобразовать так, чтобы остался квадрат, а хвостик исчез. На верную дорогу я вышел случайно; принципиально же это в корне неверно и могло увести меня неведомо куда.
Я сосчитал число знаков в строке — их было тридцать два — и решил сжать матрицу, объединив знаки по два. То есть разбил текст на кодовые слова с длиной два. Но в двоичном коде двумя знаками можно записать лишь четыре цифры — 0(00), 1(01), 2(10) и 3(11).
Таким образом я перевел получившийся текст в четвертичную систему; теперь он выглядел так:
Матрица осталась прямоугольной, но она была вытянута уже по вертикали. И вот какая штука: во всей матрице не было ни единого пуля. Я счел это добрым знаком, потому что из полной неразберихи начала проглядывать какая-то система…
Навязчивая идея о квадратной матрице преследовала меня. Недолго думая, я разделил криптограмму на две неравные части: вверху остался квадрат из 256 (16х16) знаков, а внизу — прямоугольная таблица с корявым хвостом.
Уже час я находился на борту «Стратопорта», а решение задачи даже не забрезжило. Но с мертвой точки дело сдвинулось: неверной дорожкой я как-то приближался к цели. Только минут через сорок меня осенило: нижняя часть может оказаться ключом к верхней. А вдруг передо мною редкий код с переменной длиной кодового слова? Тогда указание на то, как варьировать длину, надо искать в самой криптограмме.
Предположим, что длина меняется от 1 до 3 и нижняя часть матрицы — это запись длин, а четвертичный код выбран для того, чтобы затруднить работу дешифровщика: в этой криптограмме и основной текст, и ключ записаны всего тремя цифрами, и не так-то просто распознать, что есть что. К тому же кодовый текст выглядит абсолютно бессмысленным, и отличить префиксы кодовых слов, отделить слова друг от друга на первый взгляд невозможно.