Книга Криптографические приключения. Таинственные шифры и математические задачи, страница 10. Автор книги Роман Душкин

Разделитель для чтения книг в онлайн библиотеке

Онлайн книга «Криптографические приключения. Таинственные шифры и математические задачи»

Cтраница 10

Отец кивнул и продолжил:

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

Я предложил:

— Можно каждой букве дать номер от 1 до 33, а пробел пусть будет 34, и тогда можно передавать буквы по номерам, а сам номер кодировать длительностью сигнала в секундах.

Отец одновременно улыбнулся и укоризненно покачал головой:

— Ты прекрасно знаешь, что пробел в сообщениях встречается чаще всего, так что использовать для его кодирования число 34 просто неэкономно. Это во-первых. Во-вторых, а так ли уж нужен пробел?

Действительно, ведь при помощи шифромашины мы с Марком передавали сообщения без пробелов. Тем временем отец продолжил:

— Но проблема даже не в этом. Нужно будет очень точно отмерять секунды, а при длинной передаче внимание оператора наверняка собьётся, и декодировать сигнал будет трудно. Давайте придумаем что-то более компактное и удобное для распознавания. Екатерина, ты знакома с двоичной системой счисления?

— Нет.

— Хорошо. Тогда как ты думаешь, почему мы считаем до десяти, то есть почему используем для записи чисел десять цифр от 0 до 9?

— Наверное, потому, что у нас десять пальцев на руках.

— Ты права, есть такая гипотеза. Но если подумать, то число «10» ничем не лучше и не хуже других чисел. Просто мы привыкли, что у нас именно десять цифр. А что получится, если использовать только две цифры: 0 и 1?

Катя нахмурилась. Я уже знал об этой системе, поэтому дал своей знакомой возможность поразмыслить самостоятельно. Она думала, но, видимо, в голову ничего не приходило. Тогда папа обратился ко мне, и я уже не упустил возможности покрасоваться. Я взял лист бумаги и написал в столбик:


0 = 0

1 = 1

2 =…


— Как получить 2? Нам надо к 1 прибавить ещё 1. Правила сложения очень простые:


0 + 0 = 0

0 + 1 = 1

1 + 1 = 10


— Почему это 10?

— Смотри. У нас есть только две цифры. Цифра 1 — последняя в ряду (как цифра 9), поэтому, если прибавить к ней единицу, произойдет перенос разряда, так же как если к девяти прибавить один. Но можно просто запомнить эти правила и не задумываться.

Отец блаженно улыбался, слушая моё объяснение. Похоже, этого он от меня и ожидал. Ободрённый, я спросил Катю:

— Теперь ты можешь сказать, как записать «3»?

Катя подумала и сказала, что «3» надо записывать как «11». Я подтвердил, что это абсолютно правильно, и сразу же спросил, как записывать «4». Но тут уже возникли сложности, и пришлось объяснять, как происходит перенос разряда и почему в итоге получается «100». После этого мы записали двоичные числа до 31 (так попросил папа).

Тем временем папа рассказал нам, как из двоичной записи числа перейти к десятичной. Оказалось, что каждому разряду соответствует степень двойки: 1 (20), 2 (21), 4 (22), 8 (23), 16 (24), 32 (25), 64 (26), 128 (27), 256 (28), 512 (29), 1024 (210) и т. д. Нужно взять те степени, которым в записи двоичного числа соответствуют единицы, а потом сложить их. Например, двоичному числу 10111 соответствует десятичное 16 + 4 + 2 + 1 = 23.

Затем папа сказал, что в математике числа «0» и «1» называются битами и что любую информацию можно представить при помощи битов. После этого мы наконец перешли к разработке системы кодирования.

Папа составил таблицу из трёх столбцов. В первый он выписал все буквы русского алфавита, пропустив букву Ё. Во втором записал их номера (от 0 до 31). А в третий столбец он записал те же номера в двоичном представлении, но каждый номер состоял из пяти битов — от 00000 до 11111. Получилось вот что:

Криптографические приключения. Таинственные шифры и математические задачи

— Теперь договоримся, как передавать биты 0 и 1. Тут можно использовать и метод Морзе. Пусть «0» будет коротким сигналом, а «1» — длинным, раза в три длиннее. При этом между каждым сигналом надо делать небольшую паузу, а между буквами, то есть между каждыми пятью сигналами — паузу подлиннее.

Отец взял мой передатчик и попросил записывать за ним. Мы взяли карандаши, а папа стал выбивать последовательность сигналов: длинный, короткий, короткий, длинный, короткий… Я записывал за ним: 10010 00101 01011 00101 00011 10000 00000 10100. Получилось слово «ТЕЛЕГРАФ».

Мы ещё немного потренировались — я выстукивал слова, Катя записывала, потом наоборот. Вроде бы всё понятно и довольно просто. Потом папа сказал:

— Ну вот, я хотел начать с протокола, а потом перейти к кодированию, а получилось наоборот. Давайте же изучим, что такое протокол. Скажи, Екатерина, как ты поймёшь, что надо начинать записывать передачу Кирилла?

— Я услышу звонок и увижу мигающую лампочку.

— Но ведь ты наверняка в этот момент будешь что-то делать, а карандаша и бумаги рядом не окажется. А может быть, и самой тебя поблизости не будет. Как быть?

Мы задумались. А ведь действительно. Чтобы успешно передать сообщение, нам обоим надо быть около своих устройств, но как это сделать, если мы друг друга не видим? Но отец продолжил:

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

Мы с Катей переглянулись, а отец тем временем говорил:

— Мы введём несколько служебных символов: «Запрос на начало передачи», «Ответ о готовности приёма» и «Окончание передачи». Подумайте и ответьте мне, для чего нужны эти символы.

Я сказал:

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

Отец согласился, а потом обратился к Кате:

— Екатерина, ты можешь придумать, как будут выглядеть эти три служебных символа?

— Думаю, что они должны состоять из последовательности сигналов, которые непохожи на наши биты «0» и «1».

— Почему?

— Так будет проще понять, что это служебная информация, а не текст телеграммы.

— Здорово, молодец! Это, в общем, необязательно: в компьютерных системах используются только биты и ничего другого. Но мы действительно можем позволить себе применить другие символы, чтобы проще отличать. Поэтому предлагаю такую схему…

Вход
Поиск по сайту
Ищем:
Календарь
Навигация