我正在为我的学校项目构建一个caesar密码,并想知道解密部分如何工作

时间:2016-06-15 21:44:32

标签: python python-3.x cryptography caesar-cipher

我正在使用Python 3.4编写,到目前为止编写了这个:

-D

我不知道如何对解密部分进行编程(请注意:我希望代码相对简单,并且希望它与上面的代码类似)。

2 个答案:

答案 0 :(得分:0)

Caesar cyphers是对称的 - 你只需要向后应用相同的逻辑 - 在加密文本中找到索引并从普通字母表中获取该索引:

plain = ''
for eachletter in cipertext:
    position = shiftedAlphabet.index(eachletter)
    shiftedLetter = alphabet[position]
    plain = plain + shiftedLetter

答案 1 :(得分:0)

因此,您已经发布的代码存在一些问题。我可以忽略一些轻微的语法错误,但也存在一些逻辑错误。

您向用户提示的第二个提示询问他们想要转移多少班次,但您用于该计划的转换字母始终从'a'转移到'j'。如果用户进入的班次不是9

,会发生什么?

另一方面,当输入明文的字符不在字母表中时会发生什么?当你执行.index(每个通讯)时,它将返回-1。这将如何导致您的密码行为?

最后,您的教师似乎希望能够随时按'e''d'进行加密或解密,但是如果用户在开始时尝试解密,请立即I don't understand a cat打印1}}最后解密时遇到同样的问题。此外,您也可能需要在解密时要求转换。

我的最后一条建议是考虑一下凯撒密码是什么。你只是旋转字母。如果输入为2且班次为c ecv,则会获得2。要解密,您只需向后旋转相同数量的user_contests = Contest.objects.filter(picture__user=user)