Python шифр цезаря
Шифр Цезаря (также известный как шифр сдвига) - это простой вид шифрования, в котором каждая буква в сообщении сдвигается на определенное количество позиций в алфавите. В Python можно реализовать шифр Цезаря с помощью нескольких строк кода.
Прежде чем приступить к реализации кода, давайте разберемся с самим алгоритмом шифрования Цезаря. Предположим, что у нас есть сообщение, которое мы хотим зашифровать. Мы выбираем ключ - число, на которое будут сдвигаться буквы в алфавите. Например, при сдвиге на 3 буква "a" будет заменяться на "d", "b" на "e" и так далее. Если ключ больше, чем количество букв в алфавите, мы можем вернуться в начало алфавита и продолжить сдвиг сначала.
Начнем с реализации функции, которая будет шифровать сообщение. Эта функция будет иметь два аргумента: само сообщение и ключ шифрования.
def caesar_cipher_encrypt(message, key):
encrypted_message = ""
for char in message:
if char.isalpha():
if char.isupper():
encrypted_char = chr((ord(char) - 65 + key) % 26 + 65)
else:
encrypted_char = chr((ord(char) - 97 + key) % 26 + 97)
encrypted_message += encrypted_char
else:
encrypted_message += char
return encrypted_message
В этой функции мы используем цикл for, чтобы пройти по каждому символу в сообщении. Затем мы проверяем, является ли символ буквой с помощью метода isalpha(). Если символ - буква верхнего регистра, мы используем выражение (ord(char) - 65 + key) % 26 + 65 для вычисления нового символа. Здесь ord(char) возвращает числовое значение символа, вычитаем 65 для возврата значения от 0 до 25, прибавляем ключ и берем остаток от деления на 26, а затем снова прибавляем 65, чтобы вернуться к коду символа буквы верхнего регистра в алфавите ASCII. Аналогично для символов нижнего регистра.
Для дешифрования сообщения мы можем использовать обратный ключ или сделать его отрицательным. Но мы также можем просто изменить знак ключа на противоположный и повторно вызвать функцию шифрования.
Вот пример кода, показывающий использование функции шифрования:
message = "Привет, мир!"
key = 3
encrypted_message = caesar_cipher_encrypt(message, key)
print("Зашифрованное сообщение:", encrypted_message)
decrypted_message = caesar_cipher_encrypt(encrypted_message, -key)
print("Расшифрованное сообщение:", decrypted_message)
В этом примере мы задаем переменные message и key для того, чтобы закодировать сообщение "Привет, мир!" с ключом 3. Затем мы вызываем функцию caesar_cipher_encrypt() с этими аргументами и сохраняем результат в переменной encrypted_message. Это зашифрованное сообщение затем выводится на экран.
Затем мы повторно вызываем функцию caesar_cipher_encrypt(), передавая зашифрованное сообщение и ключ с обратным знаком (для дешифрования), и выводим результат расшифрованного сообщения.
Вышеприведенный код выведет следующий результат:
Зашифрованное сообщение: Ухлдш, плу! Расшифрованное сообщение: Привет, мир!
Таким образом, мы успешно реализовали шифр Цезаря в Python и выполнить шифрование и дешифрование сообщений с помощью функции caesar_cipher_encrypt().