Uchebnaya_praktika / task4 / Условие
.docЗадача D. Шифровки
В заданном файле содержится зашифрованный текст. Известна следующая информация.
1. Язык исходного текста – английский.
2. Перед шифрованием из текста были удалены все символы, кроме букв, которые были приведены к верхнему регистру.
3. Исходный текст представляет собой отрывок из произведения известного американского писателя.
4. Для шифрования текста был использован один из трех алгоритмов: Цезаря, простой подстановки или Виженера (размерность ключа – 10 байт).
Ниже представлены базовые сведения о каждом из этих алгоритмов.
Шифр Цезаря является частным случаем подстановочного шифра. Главнейший элемент алгоритма – сдвиговое число (в случае английского алфавита – от 0 до 25). Каждая буква исходного текста заменяется на символ, находящийся ровно на позиций правее в алфавите (принимая во внимание возможность кругового перехода). Так, при буква A будет заменена на букву D, B – на E, а Y – на B. Например, строка EXAMPLE при превратится в строку OHKWZVO.
Подстановочный шифр устроен похожим образом, за тем исключением, что для каждой буквы алфавита выбирается парная буква для замены, таким образом, чтобы множество букв-заменителей образовывало перестановку алфавита. Например, строка EXAMPLE при перестановке XCFGBZYKLMTUPOQISRVHAWEDJN (A заменяется на X, B заменяется на С, C заменяется на F и так далее) перейдет в строку BDXPMUB.
Приведенное ниже описание шифра Виженера заимствовано с ресурса Wikipedia.
Шифр состоит из последовательности нескольких шифров Цезаря с различными значениями сдвига. Для зашифровывания может использоваться таблица алфавитов, называемая tabula recta или таблица (квадрат) Виженера (рисунок 1). Применительно к латинскому алфавиту таблица составляется из строк по 26 символов, причём каждая следующая строка сдвигается на несколько позиций. Таким образом, в таблице получается 26 различных шифров Цезаря. На разных этапах кодировки шифр Виженера использует различные алфавиты из этой таблицы. На каждом этапе шифрования используются различные алфавиты, выбираемые в зависимости от символа ключевого слова.
Рисунок 1 – Таблица Виженера
Пусть исходный текст представляет собой строку ATTACKATDAWN, а ключом выступает слово LEMON. Первым действием следует записывать ключевое слово циклически до тех пор, пока его длина не будет соответствовать длине исходного текста (в данном примере – LEMONLEMONLE). Тогда первый символ исходного текста A будет зашифрован последовательностью L, которая является первым символом ключа. Первый символ L шифрованного текста находится на пересечении строки L и столбца A в таблице Виженера. Точно так же для второго символа исходного текста используется второй символ ключа; то есть второй символ шифрованного текста X получается на пересечении строки E и столбца T. Остальная часть исходного текста шифруется подобным способом. Зашифрованный текст будет иметь вид LXFOPVEFRNHR.
Задача
Ваша задача – расшифровать как можно больше текстов.
Технический регламент
Все участники получают три файла task1.txt, task2.txt и task3.txt. Известно, что при шифровании первого текста были использован шифр Цезаря, второго – простой подстановки, третьего – Виженера.
После окончания соревнования необходимо сдать на проверку три файла ans1.txt, ans2.txt и ans3.txt, каждый из которых должен содержать расшифровку соответствующего текста.
Для уточнения деталей обратитесь к примеру.
В процессе решения участники могут пользоваться любыми источниками информации, однако в целях обеспечения равной борьбы рекомендуется воздерживаться от поиска методов решения предлагаемой задачи в Интернете и коллективного обсуждения.
Система оценки
Итоговый балл участника рассчитывается как , где , и равны единице, если соответствующий текст был полностью расшифрован, и нулю в противном случае. Если участник не дал удовлетворяющего условию задачи ответа, соответствующий элемент принимается равным нулю. Победителем считается участник, набравший максимальный балл.
Пример
task1.txt |
ans1.txt |
OHKWZVO |
EXAMPLE
|
За предлагаемый ответ будет начислен 1 балл.