-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCezorCrypt.py
38 lines (34 loc) · 2.04 KB
/
CezorCrypt.py
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
#Основная функция разшифровки принимающая:
#text - текст для расшифровки
#shift - сдвиг 1-25 / 1-32
#alphabet - алфавит en/ru
def caesar_cipher(text, shift, alphabet):
result = ''
for char in text:
if char.isalpha():
idx = alphabet.index(char)
shifted = (idx + shift) % len(alphabet)
result += alphabet[shifted]
else:
result += char
return result
def all_caesar_shifts(text, alphabet): #Принимает исходный текст и алфавит
for i in range(1, len(alphabet)): #Цикл для каждой буквы алфавита
print(f"Shift {i}: {caesar_cipher(text, i, alphabet)}") #Собственно выводит все возможные комбинации
def choose_alphabet():
language = input("Выберите язык (английский - 'en', русский - 'ru'): ")
if language.lower() == 'en':
return 'abcdefghijklmnopqrstuvwxyz'
#ABCDEFGHIJKLMNOPQRSTUVWXYZ
elif language.lower() == 'ru':
return 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
#АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
else:
print("Неправильный выбор. Пожалуйста, выберите 'en' для английского или 'ru' для русского.")
return choose_alphabet() #При неверном вводе просто перезапускает функцию
def main():
alphabet = choose_alphabet() #Переменная алфавит равна функции выбора алфавита
text = input("Введите текст для расшифровки: ")
all_caesar_shifts(text, alphabet) #Передает в функцию текст и алфавит
while True:
main()