Python - 没有正确解密的字符

时间:2016-02-01 13:13:50

标签: python encryption caesar-cipher

我一直致力于一个程序,该程序将采用纯文本文件,对邮件进行加密,然后解密邮件。解密消息时,文本文件中的逗号将替换为不同的ASCII字符。有没有人有解决方案或能帮我解决问题?

请注意:我已将我的代码包含在pastebin中,因为它很长,而且我不知道我可以发布哪些部分来指定问题。谢谢!

Pastebin Link

1 个答案:

答案 0 :(得分:0)

不幸的是,我认为您需要更改算法而不是仅修复实施中的错误。您的加密算法似乎只更改ASCII值加finalNumber超过126的字符。通常,这意味着您无法可靠地判断字母是否已加密。例如,在encrypt中,此块

added = finalNumber + valLetter
if added > 126:
    subtracted = added - 94
    encrypted += chr(subtracted)
else:
    encrypted += chr(valLetter)

会使一些字母重叠。假设finalNumber30。要加密'a',即ASCII 97,added=127。因此,subtracted=33'!'将写入encrypted。但是,当您对'!'本身进行加密时,added = 33+30 = 63不大于126,因此'!'将被复制。当您尝试解密时,您将无法判断加密文本中的'!'是否应解密为'a''!'

This question是关于在Python中构建一个Caesar密码,这似乎是你想要做的。我建议从那里开始。祝你好运!

(注意:未经测试;此答案仅基于阅读来源。)