Пляшущие человечки. На тайном собрании глав преступного мира города Лондона председатель собрания профессор Мориарти постановил: отныне вся переписка между преступниками должна вестись тайнописью. В качестве стандарта были выбраны «пляшущие человечки», шифр, в котором каждой букве латинского алфавита соответствует хитроумный значок. Реализовать приложение, шифрующее исходный текст (в качестве ключа используется кодовая таблица, устанавливающая однозначное соответствие между каждой буквой и каким-нибудь числом). Каждый процесс–шифровальщик шифрует свои кусочки текста, многократно получаемые от менеджера. Распределение фрагментов текста между процессами–шифровальщиками осуществляется процессом–менеджером, который передает каждому процессу участок текста, получает от него результат, передает следующий незашифрованный фрагмент. Он же собирает из отдельных фрагментов зашифрованный текст. Количество процессов задается опционально. Каждый процесс может выполнять свою работу за случайное время.
Профессор Мориарти в моем случае опять оказался программистом и его щифр заключается в сдвиге символов на 2 позиции по ASCI таблице (как и в идз2!)
argv[1] = IP, argv[2] - порт, argv[3] - текст
Реализация программы на 5 баллов:
✅ код клиента (с комментариями) лежит здесь
Код создает TCP-клиент, который подключается к серверу, принимает от него текст, шифрует иго с помощью сдвига на 2 символа вправо и отправляет обратно на сервер.
✅ код сервера (с комментариями) лежит здесь
Код создает TCP-сервер, который принимает от клиентов текст, шифрует его с помощью сдвига на 2 символа вправо и отправляет обратно клиенту.
✅ Тестовые файлы лежат тут
✅ Результаты прогона по тестам лежат тут
✅ Результаты тестирования:
(Тесты и результаты шифрования слишком большие, поэтому добавлять в таблицу тексты результатов я не буду)
test№ | Ожидаемый Результат | code |
---|---|---|
1 | (Слишком длинный) | OK |
2 | (Слишком длинный) | OK |
3 | (Слишком длинный) | OK |
4 | (Слишком длинный) | OK |
5 | (Слишком длинный) | OK |