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

Caesar шифр в Python

Caesar Chiph – это метод, в котором каждая буква в открытом тексте заменяется буквой некоторые фиксированные … Помечено Python, программирование.

Caesar шифр это метод, в котором каждая буква в открытом тексте заменяется буквой некоторое фиксированное количество позиций по алфавиту. Например, с смещением 1, A будет заменен B, B стал бы C, и так далее. Способ, по-видимому, по имени Джулиуса Цезаря, который, по-видимому, использовал его для общения со своими чиновниками.

Таким образом, чтобы зашифровать данный текст, нам нужно целочисленное значение, известное как смещение, которое указывает количество позиций, которые каждая буква текста была перемещена вниз.

Пример: Текст: Nabroleonx Сдвиг: 4 Шифр: RefvSpisr |.

Теперь мы собираемся создать простую программу в Python, которая может кодировать и декодировать Caesar Chipher на основе предпочтения пользователя.

Во-первых, давайте обсудим наш алгоритм:

  1. Принять вклад от пользователя
  2. Итайте для символов String и получите значение ASCII символов.
  3. Найдите позицию символов из нашего назначенного первоначального символа ASCII, используя значение ASCII, которое мы получили на шаге 2
  4. Преобразовать число, которое мы находим в качестве положения в шаге трех в символ с использованием ASCII, который будет наше зашифрованное сообщение.

🔰 Для шага 2 мы собираемся использовать Орд () Функция для преобразования символа в его целочисленное положение в таблице ASCII (I.E. ord (a) даст 65).

🔰 Для шага 4 мы будем использовать chr () Чтобы вернуть символ из таблицы ASCII, представляющий указанный Unicode (I.E. Chr (65) даст «A»).

Давайте займем время, чтобы пройти наше главное, если условие для нашего шифра. Нашими персонажами присваиваются целочисленными значениями на таблице ASCII, и нам нужно знать, где находится наш персонаж, который будет зашифрован/расшифрован. Итак, мы используем Орд () Чтобы изменить наши символы в их целочисленный эквивалент в таблице ASCII.

Позиция (CHAR) – ORD (“”)

Мы вычитали целочисленное значение пустого пространства от целочисленного значения нашего персонажа, чтобы увидеть, где наш символ относительно нашей исходной позиции, который является пустым пространством. После этого

положение = (позиция + смена)% 95

Здесь мы берем моду с 95, потому что в таблице ASCII существует 95 символов между пустым пространством и «~».

Затем мы преобразуем новую позицию, которую мы имели на вышеуказанной линии и добавьте его на наш начальный символ и использовать chr () Чтобы изменить целочисленное значение в эквивалент ASCII.

new_char (позиция + ord (“”))

Затем мы добавим его к нашей переменной Encrypted_Message в каждой итерации и вуале, мы получили нашу шифруцию_мессаж.

Encrypted_message.

🕛 Без дальнейшего ADO добраться до кодирования.

"""
    Written by: Nabroleonx July 14,2021
    Description: Caesar cipher encoder/decoder
"""

print('''
-------------------------------------------------------------
 To decrypt what you encrypted,use the negative of the shift
 value you entered to encrypt your message.
 If you used a shift value of "3" to encrypt your message,
 then use -3 to decrypt your message.
 ------------------------------------------------------------
''')

stop = 'no'

def cipher(message, shift):
    encrypted_message = ""
    for char in message:
        if char >= " " and char <= "~":
            position = ord(char) - ord(" ")
            position = (position + shift) % 95
            new_char = chr(position + ord(" "))
            encrypted_message += new_char
    print("The encrypted message is: ", encrypted_message)


while stop == 'no':

    message = input("Enter the message you want to encrypt/decrypt: ")
    shift = int(input("enter the shift value u want: "))

    cipher(message, shift)

    again = input("do you want to continue? yes/no ").lower()

    if again == 'yes':
        continue
    else:
        print("\n Thanks for using me! Till next time, Cya")
        stop = 'yes'

Это это для цезаря шифра, счастливого шифрования и дешифрования! Это мой первый пост. Любые комментарии или предложения приветствуются.

Смотрите вы все в следующий раз.

Оригинал: “https://dev.to/nabroleonx/caesar-cipher-in-python-d88”