我如何制作简单的加密/解密程序?

时间:2015-10-19 18:39:23

标签: python encryption tkinter

我想知道(正如问题所说)如何制作一个简单的加密和解密程序。

letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' encryption_code = 'LFWOAYUISVKMNXPBDCRJTQEGHZ'

我希望后一部分是字母表的字母被加密到的,如果用户选择解密它,我希望它被反转或恢复为字母表形式。

这是否太复杂了,因为从我看过的例子来看,他们似乎只是将字母表移动3或4个空格并将其用作加密代码。

2 个答案:

答案 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)