это вариант:
from string import ascii_lowercase
alphabet = ascii_lowercase + '$&%'
def encrypt(plain, key):
table = str.maketrans(alphabet, key)
return plain.translate(table)
str.maketrans
создаст таблицу, которую затем можно будет использовать в str.translate
для сопоставления всех символов из alphabet
с их перетасованными аналогами.
Вы можете использовать его как:
from random import shuffle
key_list = list(alphabet)
shuffle(key_list)
key = ''.join(key_list) # kd&ygphtcjxsfwrqo%$zianmvuebl
encrypt('hello world', key) # tgssr nr%sy
Ваш алфавит, кажется, также включает заглавные буквы; для этого просто измените:
from string import ascii_letters
alphabet = ascii_letters + '$&%'
обратите внимание, что key
должна иметь ту же длину, что и alphabet
.