Зашифровать ФАМИЛИЯ ИМЯ ОТЧЕСТВО(Щёткин Сергей Викторович), используя шифр замены. Написать программу, реализующий данный метод, используя стандартный генератор случайных чисел. Ввод текста должен осуществляться с . Консоли.
Сайт не дает загрузить текст программы даже текстовым файлом, поэтому вставляю картинкой.
Программа должна запускаться с единственным аргументом, определяющем режим работы: encrypt (зашифрование) или decrypt (расшифрование). Если аргумент не указан, по умолчанию используется зашифрование.
Ключом шифрования является целое число из диапазона [1; 100]. При зашифровании ключ генерируется автоматически, используя стандартный генератор случайных чисел. При расшифровании ключ вводится с клавиатуры.
Шифртекст представляет собой последовательность целых чисел, разделенных пробелом. Рассматривать шифртекст в виде последовательности символов неудобно, потому что часть символов являются непечатными. Можно сказать, что входной и выходной алфавиты шифра замены различаются (в задании ограничений на это не увидел).
Запишем этот алгоритм, и на место команды1 поставим команду сместиться на (a, b). (здесь a, b -это нужные нам координаты смещения в команде1)
Повтори 2 раз Сместиться на (a, b) Сместиться на (3, 2) Сместиться на (2, 1) Конец Сместиться на (−6, −4)
Выполнение этого алгоритма приведёт к следующим смещениям по оси икс: a + 3 + 2 + a + 3 + 2 - 6 Так как нам известно, что в результате этих смещений чертёжник вернулся в исходную точку, то это значит что сумма всех смещений равна нулю. Можем записать уравнение и найти a: a + 3 + 2 + a + 3 + 2 - 6 = 0 2a + 4 = 0 2a = -4 a = -4 / 2 = -2 (нашли смещение по x в команде1)
Далее, делаем то же самое для смещения по y: Выполнение этого алгоритма приведёт к следующим смещениям по оси игрек: b + 2 + 1 + b + 2 + 1 - 4 Составляем уравнение: b + 2 + 1 + b + 2 + 1 - 4 = 0 2b + 2 = 0 2b = -2 b = -2 / 2 = -1 (нашли смещение по y в команде1)
Значит, вместо команды1 нужно поставить команду, указанную в варианте ответа 1) Сместиться на (-2, -1)
Сайт не дает загрузить текст программы даже текстовым файлом, поэтому вставляю картинкой.
Программа должна запускаться с единственным аргументом, определяющем режим работы: encrypt (зашифрование) или decrypt (расшифрование). Если аргумент не указан, по умолчанию используется зашифрование.
Ключом шифрования является целое число из диапазона [1; 100]. При зашифровании ключ генерируется автоматически, используя стандартный генератор случайных чисел. При расшифровании ключ вводится с клавиатуры.
Шифртекст представляет собой последовательность целых чисел, разделенных пробелом. Рассматривать шифртекст в виде последовательности символов неудобно, потому что часть символов являются непечатными. Можно сказать, что входной и выходной алфавиты шифра замены различаются (в задании ограничений на это не увидел).
Пример работы программы в режиме зашифрования:
% python3 cipher.py encrypt
Running in encryption mode
Plaintext: Щёткин Сергей Викторович
Key: 41
Ciphertext: 1106 1146 1131 1123 1121 1126 73 1098 1118 1129 1116 1118 1122 73 1083 1121 1123 1131 1127 1129 1127 1115 1121 1136
Пример работы программы в режиме расшифрования:
% python3 cipher.py decrypt
Running in decryption mode
Ciphertext: 1106 1146 1131 1123 1121 1126 73 1098 1118 1129 1116 1118 1122 73 1083 1121 1123 1131 1127 1129 1127 1115 1121 1136
Key: 41
Plaintext: Щёткин Сергей Викторович