Перед нами стоит следующая задача: необходимо зашифровать текст написанный на русском языке. Алгоритм шифрования такой: имеем алфавит русского языка, который содержит в себе 33 буквы, необходимо перемешать исходный алфавит случайным образом (каждая буква в алфавите имеет номер своей позиции в алфавите), затем на каждой позиции правильного алфавита мы заменяем буквами из перемешанного «модернизированного» алфавита.
Работать будем с файлами: читаем заранее созданный файл (мы уверены, что файл существует. поэтому проверку опустим) и записываем в файл.
Исходный текст, который требуется зашифровать, выглядит следующим образом и был взят из произведения Гоголя «Мёртвые души»:
1 2 3 4 |
Поехали отыскивать Маниловку. Проехавши две версты, встретили поворот на проселочную дорогу, но уже и две, и три, и четыре версты, кажется, сделали, а каменного дома в два этажа все еще не было видно. Тут Чичиков вспомнил, что если приятель приглашает к себе в деревню за пятнадцать верст, то значит, что к ней есть верных тридцать. Деревня Маниловка немногих могла заманить своим местоположением. |
Собственно, код скрипта шифратора:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import random #исходный "правильный" алфавит original_alphabet = ['а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я'] modified_alphabet = original_alphabet.copy() #копируем исходный алфавит в новую переменную random.shuffle(modified_alphabet) #перемешиванием случайным образом скопированный алфавит file_input = open("input.txt", "r", encoding = "utf8") #открываем файл на чтение указав кодировку line = file_input.readline() #считываем первую строку из файла input_symbols = [] #сюда будем записывать шифрованные буквы текста while line: #пока есть строки продолжаем считывать for symbol in line: #разбиваем полученную строку на буквы if symbol.lower() in original_alphabet: #преобразуем к нижнему регистру и проверяем есть ли данная буква в "правильном" алфавите input_symbols.append(modified_alphabet[original_alphabet.index(symbol.lower())]) #если есть, то заменяем на букву, находящуюся на той же позиции в перемешанном алфавите и кладём в список else: input_symbols.append(symbol) #если нет, то кладём в список без модификации line = file_input.readline() #считываем следующую строку из файла file_input.close() #закрываем файл с исходным текстом file_output = open("output.txt", "w", encoding = "utf8") #открываем файл, в который будем записывать зашифрованный текст file_output.write(''.join(input_symbols)) #преобразуем список в строку file_output.close() #закрываем файл с зашифрованным текстом |
Скрипт получился небольшим и крайне простым.
На выходе, после запуска скрипта, получаем зашифрованный текст:
1 2 3 4 |
цьнбзщл ьтраплфзтд изглщьфпу. цхьнбзфкл ъфн фнхатр, фатхнтлщл цьфьхьт гз цхьанщьмгуе ъьхьоу, гь учн л ъфн, л тхл, л мнтрхн фнхатр, пзчнтав, аънщзщл, з пзинггьоь ъьиз ф ъфз ытзчз фан ншн гн ёрщь флъгь. тут млмлпьф фацьиглщ, мть нащл цхлвтнщд цхлощзкзнт п анён ф ънхнфге юз цвтгзъэзтд фнхат, ть югзмлт, мть п гнж натд фнхгрб тхлъэзтд. ънхнфгв изглщьфпз гнигьолб иьощз юзизглтд афьли инатьцьщьчнглни. |
У Вас, скорее всего, получится другой текст, так как при каждом запуске позиции букв меняются случайным образом, следовательно зашифрованный текст всегда будет разный.