【问题标题】:How would I make a simple encryption/decryption program? [closed]我将如何制作一个简单的加密/解密程序? [关闭]
【发布时间】:2016-01-18 05:19:19
【问题描述】:

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

letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' encryption_code = 'LFWOAYUISVKMNXPBDCRJTQEGHZ'

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

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

【问题讨论】:

  • 是否有网页或其他内容可供我阅读?
  • 您也可以将每个字母转换为字母表中对应的数字减一,这就是加密/解密字符串的索引。

标签: python encryption tkinter


【解决方案1】:

使用两个字典进行映射,一个从字母到加密代码,反之进行解密:

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

使用您的方法,您的输入必须是大写的,并且用户被限制为 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

【讨论】:

  • 谢谢,现在可以正常使用了!
  • 没有问题,不客气。
【解决方案2】:

你创建一个编码器和一个解码器:

enc = str.maketrans(letters, encryption_code)
dec = str.maketrans(encryption_code, letters)

并使用它们:

encr = 'HELLO WORLD'.translate(enc)
decr = encr.translate(dec)

【讨论】:

    猜你喜欢
    • 2017-06-30
    • 1970-01-01
    • 2010-12-01
    • 2020-03-27
    • 2015-06-29
    • 2012-11-28
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多