🔐 Как сделать шифр Цезаря в Python: пошаговая инструкция для начинающих
def caesar_cipher(text, shift):
encrypted_text = ""
for char in text:
if char.isalpha():
ascii_offset = 65 if char.isupper() else 97
encrypted_char = chr((ord(char) - ascii_offset + shift) % 26 + ascii_offset)
encrypted_text += encrypted_char
else:
encrypted_text += char
return encrypted_text
text = "Пример текста"
shift = 3
encrypted_text = caesar_cipher(text, shift)
print(encrypted_text)
Детальный ответ
Как сделать шифр Цезаря в Python
Шифр Цезаря - это один из самых простых и известных методов шифрования, который основан на сдвиге символов в алфавите. В этой статье мы рассмотрим, как создать шифр Цезаря с использованием языка Python.
1. Определение шифра Цезаря
Шифр Цезаря основан на сдвиге символов в алфавите на определенное количество позиций. Например, если мы хотим зашифровать слово "HELLO" со сдвигом 3, то каждая буква будет заменена на букву, идущую через 3 позиции после нее в алфавите. Таким образом, "HELLO" будет зашифровано как "KHOOR".
2. Создание функции для шифрования
Для создания шифра Цезаря в Python, мы можем написать функцию, которая будет принимать текст и количество позиций для сдвига. Ниже приведен пример такой функции:
def caesar_cipher_encrypt(text, shift):
encrypted_text = ""
for char in text:
if char.isalpha():
ascii_code = ord(char)
shifted_code = (ascii_code - ord('A') + shift) % 26 + ord('A')
encrypted_text += chr(shifted_code)
else:
encrypted_text += char
return encrypted_text
В этой функции мы проходимся по каждому символу в тексте. Если символ является буквой алфавита, мы получаем его ASCII-код, затем сдвигаем его на указанное количество позиций с помощью формулы (ascii_code - ord('A') + shift) % 26 + ord('A')
. Затем мы преобразуем полученный ASCII-код обратно в символ с помощью функции chr()
. Если символ не является буквой, мы просто добавляем его в зашифрованный текст без изменений.
3. Пример использования функции
Теперь, когда у нас есть функция для шифрования, давайте рассмотрим пример ее использования:
text = "HELLO"
shift = 3
encrypted_text = caesar_cipher_encrypt(text, shift)
print("Зашифрованный текст:", encrypted_text)
Вывод:
Зашифрованный текст: KHOOR
В этом примере мы зашифровали слово "HELLO" со сдвигом 3 и вывели зашифрованный текст.
4. Расшифровка текста
Чтобы расшифровать текст, зашифрованный шифром Цезаря, мы можем написать функцию, обратную функции шифрования. Ниже приведен пример функции для расшифровки:
def caesar_cipher_decrypt(encrypted_text, shift):
decrypted_text = ""
for char in encrypted_text:
if char.isalpha():
ascii_code = ord(char)
shifted_code = (ascii_code - ord('A') - shift) % 26 + ord('A')
decrypted_text += chr(shifted_code)
else:
decrypted_text += char
return decrypted_text
Функция caesar_cipher_decrypt()
аналогична функции для шифрования, но использует разные значения сдвига для обратной операции.
5. Пример расшифровки текста
Ниже приведен пример использования функции для расшифровки текста, зашифрованного шифром Цезаря:
encrypted_text = "KHOOR"
decrypted_text = caesar_cipher_decrypt(encrypted_text, shift)
print("Расшифрованный текст:", decrypted_text)
Вывод:
Расшифрованный текст: HELLO
В этом примере мы расшифровали зашифрованный текст "KHOOR" и получили исходный текст "HELLO".
6. Итоги
В этой статье мы рассмотрели, как создать шифр Цезаря в Python. Мы создали функцию для шифрования и расшифровки текста, используя сдвиг символов в алфавите. Вы можете изменять количество позиций сдвига для создания разных вариантов шифра. Удачи в освоении шифрования!