SHOW:
|
|
- or go back to the newest paste.
1 | # функция занимается раскодировкой одной буквы (возвращает букву которая соответствует отправленной с шагом step) | |
2 | def decrypt_letter(letter, step): | |
3 | if letter.isalpha(): # если буква явялется буквой а не пробелом | |
4 | number = ord(letter) - step % 26 # отнимаем от кода буквы шаг (поделенный с остатком на 26) | |
5 | if number < 97: # если получился код < 97, то: | |
6 | number += 26 # прибавляем 26 что бы перейти в конец алфавита (цикличный сдвиг) | |
7 | return chr(number) # возвращаем букву соответсвующую полученному коду символа | |
8 | return letter # если это была не буква, то возвращаем символ который нам отправили | |
9 | ||
10 | # функция шифрует одну букву сдвигая её на step шагов, работает аналогично предыдущей функции | |
11 | def encrypt_letter(letter, step): | |
12 | if letter.isalpha(): | |
13 | number = ord(letter) + step % 26 | |
14 | if number > 122 or 90 < number < 97: | |
15 | number -= 26 | |
16 | return chr(number) | |
17 | return letter | |
18 | ||
19 | # занимается расшифровкой целой строки (по факту вызывает функцию расшифровки для каждого символа в строке) | |
20 | def encrypt(msg, step): | |
21 | newMsg = "" | |
22 | for i in range(0, len(msg)): | |
23 | newMsg += encrypt_letter(msg[i], step) | |
24 | return newMsg | |
25 | ||
26 | # занимается зашифровкой целой строки (по факту вызывает функцию зашифровки для каждого символа в строке) | |
27 | def decrypt(msg, step): | |
28 | newMsg = "" | |
29 | for i in range(0, len(msg)): | |
30 | newMsg += decrypt_letter(msg[i], step) | |
31 | return newMsg | |
32 | ||
33 | # функция для удобного ввода шифруемого сообщения, говорит пользователю что нужно ввести | |
34 | def func_encrypt(): | |
35 | step = int(input("Input step: ")) | |
36 | s = input("Enter message: ") | |
37 | print(encrypt(s, step)) | |
38 | ||
39 | # функция для удобного ввода расшифруемого сообщения, говорит пользователю что нужно ввести | |
40 | def func_decrypt(): | |
41 | s = input("Enter message: ") | |
42 | step = int(input("Input crypt step: ")) | |
43 | print(decrypt(s, step)) | |
44 | ||
45 | # вызываем по очереди зашифровку и расшифровку | |
46 | func_encrypt() | |
47 | func_decrypt() |