Изменить размер шрифта - +
Напрягшись, припомнил правила кодирования по Хеммингу, но и тут незадача: откуда мне знать длину кодового слова в той шифровке, что скучно светилась на индикаторе. Я поиграл немного с компом, перебрав длины 3, 4, 5, 6, 7, 8, и понял, что зашел в тупик.

Надо мной замаячил призрак Клода Шеннона, отца теории информации. Он давным-давно показал, как можно построить криптограмму, которая не поддается расшифровке, если, конечно, не известен способ ее составления. И все же я продолжал игру. Наверное, во всей последующей истории главную роль сыграло именно то, что я — полный профан в криптоанализе. Ну и еще уязвленное самолюбие: я не мог себе простить, что я не знаю, с какого конца подобраться к криптограмме. И решил брать ее в лоб. А мой дилетантизм побудил меня задуматься над формой матрицы.

До сих пор я свято полагал, что матрица кода должна быть строго квадратной, — не иначе как отголоски почти забытого университетского курса матричной алгебры. Действительно, квадратную матрицу удобно транспонировать, или если хотите проще, то симметрично преобразовать относительно диагонали. Но кто сказал, что в моем случае вообще требуется транспонирование?

Коль скоро передо мной прямоугольная матрица, размышлял я, да еще с хвостиком, это непорядок. Ее надо преобразовать так, чтобы остался квадрат, а хвостик исчез. На верную дорогу я вышел случайно; принципиально же это в корне неверно и могло увести меня неведомо куда.

Я сосчитал число знаков в строке — их было тридцать два — и решил сжать матрицу, объединив знаки по два. То есть разбил текст на кодовые слова с длиной два. Но в двоичном коде двумя знаками можно записать лишь четыре цифры — 0(00), 1(01), 2(10) и 3(11).

Таким образом я перевел получившийся текст в четвертичную систему; теперь он выглядел так:

 

1122312132311113

 

2332231233232312

 

3111323122233233

 

1323123231233112

 

1231111313132332

 

3313233132122231

 

3112231222112131

 

3133222231323212

 

3321113123213233

 

1123132332211112

 

1222332311113212

 

3231112231121231

 

1131111233233323

 

2313133133231132

 

3111113233233311

 

1223332222332123

 

2131123323323233

 

1222332232331313

 

З213221222232223

 

2322223321332321

 

3233312323132333

 

3332321122313111

 

221

Матрица осталась прямоугольной, но она была вытянута уже по вертикали. И вот какая штука: во всей матрице не было ни единого пуля. Я счел это добрым знаком, потому что из полной неразберихи начала проглядывать какая-то система…

Навязчивая идея о квадратной матрице преследовала меня. Недолго думая, я разделил криптограмму на две неравные части: вверху остался квадрат из 256 (16х16) знаков, а внизу — прямоугольная таблица с корявым хвостом.

Уже час я находился на борту «Стратопорта», а решение задачи даже не забрезжило. Но с мертвой точки дело сдвинулось: неверной дорожкой я как-то приближался к цели. Только минут через сорок меня осенило: нижняя часть может оказаться ключом к верхней. А вдруг передо мною редкий код с переменной длиной кодового слова? Тогда указание на то, как варьировать длину, надо искать в самой криптограмме.

Предположим, что длина меняется от 1 до 3 и нижняя часть матрицы — это запись длин, а четвертичный код выбран для того, чтобы затруднить работу дешифровщика: в этой криптограмме и основной текст, и ключ записаны всего тремя цифрами, и не так-то просто распознать, что есть что.

Быстрый переход