-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEncrypt_caesar
More file actions
39 lines (32 loc) · 1.76 KB
/
Encrypt_caesar
File metadata and controls
39 lines (32 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
def encrypt_caesar(text: str, shift: int) -> str:
"""Зашифровывает строку с помощью шифра Цезаря."""
result = ""
for char in text:
if char.isalpha():
# Определяем регистр для корректного сдвига (ASCII)
start = ord('a') if char.islower() else ord('A')
# Сдвигаем символ и возвращаем в алфавитный диапазон
shifted_char = chr((ord(char) - start + shift) % 26 + start)
result += shifted_char
elif char.isdigit():
# Сдвиг для цифр (0-9)
shifted_char = chr((ord(char) - ord('0') + shift) % 10 + ord('0'))
result += shifted_char
else:
# Спецсимволы оставляем без изменений
result += char
return result
def decrypt_caesar(text: str, shift: int) -> str:
"""Расшифровывает строку, зашифрованную шифром Цезаря."""
# Расшифровка — это тот же сдвиг, но в обратную сторону
return encrypt_caesar(text, -shift)
if __name__ == "__main__":
user_password = input("Введите пароль для безопасного сохранения: ")
# ключ сдвига
SHIFT_KEY = 5
# Шифрование
encrypted_pass = encrypt_caesar(user_password, SHIFT_KEY)
print(f"\n[+] Зашифрованный пароль для БД: {encrypted_pass}")
# Расшифровка (для проверки)
decrypted_pass = decrypt_caesar(encrypted_pass, SHIFT_KEY)
print(f"[+] Исходный расшифрованный пароль: {decrypted_pass}")