我想知道(正如问题所说)如何制作一个简单的加密和解密程序。
letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
encryption_code = 'LFWOAYUISVKMNXPBDCRJTQEGHZ'
我希望后一部分是字母表的字母被加密到的,如果用户选择解密它,我希望它被反转或恢复为字母表形式。
这是否太复杂了,因为从我看过的例子来看,他们似乎只是将字母表移动3或4个空格并将其用作加密代码。
答案 0 :(得分:4)
使用两个dicts进行映射,一个从字母到encryption_code,反之则解密:
letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
encryption_code = 'LFWOAYUISVKMNXPBDCRJTQEGHZ'
enc = dict(zip(letters,encryption_code))
dec = dict(zip(encryption_code, letters))
s = "HELLO WORLD"
encr = "".join([enc.get(ch, ch) for ch in s])
decr = "".join([dec.get(ch, ch) for ch in encr])
print(encr)
print(decr)
输出:
IAMMP EPCMO
HELLO WORLD
使用您的方法,您的输入必须是大写的,如果您想允许其他字符只是将映射添加到dicts,则用户被限制为A-Z以便加密字母。
letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
encryption_code = 'LFWOAYUISVKMNXPBDCRJTQEGHZ'
letters += letters.lower()
encryption_code += encryption_code.lower()
enc = dict(zip(letters,encryption_code))
dec = dict(zip(encryption_code, letters))
s = "HELLO world"
encr = "".join([enc.get(ch, ch) for ch in s])
decr = "".join([dec.get(ch, ch) for ch in encr])
print(encr)
print(decr)
输出:
IAMMP epcmo
HELLO world
任何非字母的字符在encr和decr中都是相同的,即:
s = "HELLO world!#}%"
IAMMP epcmo!#}% # encr
HELLO world!#}% # decr
答案 1 :(得分:0)
你创建了一个编码器和一个解码器:
enc = str.maketrans(letters, encryption_code)
dec = str.maketrans(encryption_code, letters)
并使用它们:
encr = 'HELLO WORLD'.translate(enc)
decr = encr.translate(dec)