Рубрики
Без рубрики

Криптография- Сдвиг шифр

Shift Cipher – самый простой и простой замену шифров, когда -либо существовавшего. Он использовался многочисленными k … Tagged с Python, Security, Cybersecurity, JavaScript.

Shift Cipher – самый простой и простой замену шифров, когда -либо существовавшего. Он использовался многочисленными королями и простыми людьми в древние времена из -за его простоты. Он также известен как шифр Цезаря, когда он использовал обобщенную форму, известную как гниль-13.

Как работает шифр смены:-

Shift Cipher – это не что иное, как замена букв слева или справа некоторым конкретным количеством букв, и это количество букв будет известно как ключ из шифра. После того, как ключ определяется, и открытый текст зашифрован в Ciphertext, мы можем отправить текст шифра тому, кто хотим. Если он/она будет иметь ключ, то он/она легко расширит сообщение, прочитает его и сможет ответить на это шифрование сообщения с тем же ключом.

Шифрование текста с помощью шифра Shift

  1. Выберите ключ, если вы хотите сместить свои буквы вправо, выберите число, которое является положительным, отрицательное число приведет к переведению букв с левой стороны.

  2. Как только ключ выбрана, преобразуйте буквы в их соответствующие числовые позиции, где 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”