Shift Cipher – самый простой и простой замену шифров, когда -либо существовавшего. Он использовался многочисленными королями и простыми людьми в древние времена из -за его простоты. Он также известен как шифр Цезаря, когда он использовал обобщенную форму, известную как гниль-13.
Как работает шифр смены:-
Shift Cipher – это не что иное, как замена букв слева или справа некоторым конкретным количеством букв, и это количество букв будет известно как ключ из шифра. После того, как ключ определяется, и открытый текст зашифрован в Ciphertext, мы можем отправить текст шифра тому, кто хотим. Если он/она будет иметь ключ, то он/она легко расширит сообщение, прочитает его и сможет ответить на это шифрование сообщения с тем же ключом.
Шифрование текста с помощью шифра Shift
Выберите ключ, если вы хотите сместить свои буквы вправо, выберите число, которое является положительным, отрицательное число приведет к переведению букв с левой стороны.
Как только ключ выбрана, преобразуйте буквы в их соответствующие числовые позиции, где A-> 1, B-> 2 и так далее.
Теперь примените заданную формулу к каждому номеру:-
C=(P+K)%26
Где p – ваш открытый текст, преобразованный в числовые позиции, k – это ключ, а C – числовые позиции букв в шифровом контексте.
Теперь преобразуйте числовые позиции зашифрованного текста (C) в алфавит в соответствии с 0-> Z, 1-> A SO, и у вас есть шифрованное сообщение об открытом тексту !!!
Пример:-
Пусть наш открытый текст будет:- “”
Тогда числовые позиции нашего открытого текста будут:-
5 | 7 | 8 | 9 | 11 | 12 | 14 | 15 | 20 | 7 | 8 | 9 | 9 | 11 | 12 | 14 | 20 | 20 |
Пусть наш ключ будет 7, после использования формулы для шифрования, число будет выглядеть как:-
12 | 14 | 15 | 16 | 18 | 19 | 21 | 22 | 1 | 14 | 15 | 16 | 16 | 18 | 19 | 21 | 1 | 1 |
И, наконец, преобразование чисел обратно в буквы даст нам наш шиферный текст,
A | L | N | O | P | R | S | U | V | A | A | N | O | P | P | R | S | U |
Буквы после преобразования:-
‘Rpssaolrpunavupnoa’
Приведенный выше тамп, – это зашифрованный текст, его часто пишут без каких -либо мест, чтобы добавить сложность в шиферный текст.
Написание кода Python для шифры смены
Написание кода для этого шифра действительно простой, один лайнер, некоторые могут сказать. Вот код:-
def shift_encrypt(plain_text: str, key: int): cipher_text = [] # stores encrtypted text plain_text = plain_text.lower().replace(' ','') # reduce complexity for i in list(plain_text): cipher_text.append(chr((ord(i)-97 + key)%26 + 97)) # real encryption happens here return "".join(cipher_text)
Код здесь довольно пояснительный, за исключением нескольких строк. Давайте просмотрим все линии на один.
cipher_text = [] # stores encrtypted text plain_text = plain_text.lower().replace(' ','') # reduce complexity
Эти две строки определяют имена списков cipher_text
Хранение текста после шифрования и уменьшает сложность простого текста, преобразуя текст в нижний чехол и удаляя все пробелы.
Затем появляется самая важная строка в коде:-
cipher_text.append(chr((ord(i)-97 + key)%26 + 97))
Прежде всего, эта строка кода преобразует буквы в свое представление ASCII, используя Ord
Функция, что означает, что A станет 97, B станет 98, и так далее.
Затем он вычтет 97 из кода ASCII, который будет преобразовать 97 в 0, следовательно, поместит «A» в 0 -е место и размещает «Z» на 25 -й позиции. Это сделано для упрощения операции смены.
После этого мы продолжаем и добавляем Ключ
сдвинуть и фактически шифровать данные.
Тогда мы делаем Мод 26
Потому что после вычитания 97 наши алфавиты лежат от 0 до 25 и выполняют Мод 26
Убедитесь, что ничто не выходит из диапазона наших алфавитов. 97 добавляется в конце, чтобы преобразовать смещенные числа обратно в свои представления ASCII.
После того, как это сделано много, мы преобразуем смещенные коды ASCII обратно в символы, используя Chr
функция И шифрование сделано.
Вы можете видеть, что эта строка находится внутри цикла, то есть для обеспечения того, чтобы преобразование в этой строке кода применяется к каждой букве с plain_text
Анкет
В конце,
return "".join(cipher_text)
Мы конвертируем зашифрованные символы в строку и возвращаем ее.
Дешифровая часть шифра также в значительной степени такая же, за исключением маленькой вещи.
def shift_decrypt(cipher_text: str, key: int): plain_text = [] cipher_text = cipher_text.lower().replace(' ','') for i in cipher_text: plain_text.append(chr((ord(i)-97 - key)%26 + 97)) return "".join(plain_text)
Вместо добавления Ключ
На этот раз мы вычитаем его, чтобы выполнить обратную работу смены, которую мы сделали в процессе шифрования.
Вы можете попробовать код здесь:-
(Просто нажмите кнопку «Запустить» (>))
Оригинал: “https://dev.to/sirri69/cryptography-shift-cipher-2oki”