Создайте Python-приложение, которое будет принимать путь к текстовому файлу и шифровать его содержимое с помощью алгоритма Цезаря (Caesar Cipher).
Программа должна уметь шифровать текст с помощью сдвига, указанного пользователем, и сохранять зашифрованное сообщение в новый файл. Программа также должна уметь расшифровывать файлы, зашифрованные с помощью того же сдвига.
➡️ Пример:
•
python app.py encrypt input.txt 3 — шифрует содержимое файла input.txt со сдвигом 3 и сохраняет его в encrypted.txt.•
python app.py decrypt encrypted.txt 3 — расшифровывает файл encrypted.txt со сдвигом 3 и выводит расшифрованный текст в консоль.Решение задачи ⬇️
import sys
def caesar_cipher(text, shift):
encrypted_text = []
for char in text:
if char.isalpha():
shift_base = 65 if char.isupper() else 97
encrypted_char = chr((ord(char) - shift_base + shift) % 26 + shift_base)
encrypted_text.append(encrypted_char)
else:
encrypted_text.append(char)
return ''.join(encrypted_text)
def encrypt_file(input_file, shift):
with open(input_file, 'r', encoding='utf-8') as file:
text = file.read()
encrypted_text = caesar_cipher(text, shift)
with open('encrypted.txt', 'w', encoding='utf-8') as file:
file.write(encrypted_text)
print(f'Файл зашифрован и сохранен в "encrypted.txt"')
def decrypt_file(input_file, shift):
with open(input_file, 'r', encoding='utf-8') as file:
encrypted_text = file.read()
decrypted_text = caesar_cipher(encrypted_text, -shift)
print('Расшифрованное сообщение:')
print(decrypted_text)
if __name__ == '__main__':
if len(sys.argv) != 4:
print('Используйте: python app.py <encrypt|decrypt> <путь к файлу> <сдвиг>')
sys.exit(1)
action = sys.argv[1]
file_path = sys.argv[2]
shift = int(sys.argv[3])
if action == 'encrypt':
encrypt_file(file_path, shift)
elif action == 'decrypt':
decrypt_file(file_path, shift)
else:
print('Неизвестное действие. Используйте "encrypt" или "decrypt".')