我可以用python编写程序,以用Caesar密码进行加密和解密。但我想修改程序,使其包含更多字符,例如空格,'$','&','%'等。
以下是原始代码
def encrypt(text,s):
result = ""
# traverse text
for i in range(len(text)):
char = text[i]
# Encrypt uppercase characters
if (char.isupper()):
result += chr((ord(char) - (s-65)) % 26 + 65)
# Encrypt lowercase characters
else:
result += chr((ord(char) - (s - 97)) % 26 + 97)
return result
答案 0 :(得分:0)
这是一个变体:
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
相同。