破解凯撒密码的程序

时间:2015-03-25 10:02:27

标签: python cryptography caesar-cipher

Caesar密码基本上将每个明文字母移动一个固定的数字。 例如,如果使用键2,则单词Sourpuss将被编码为Uqwrtrwuu

文本只能包含可打印的ASCII字符(32-126,用于我们的目的)。实现破解此代码的算法。

我需要解密这个:" T! X $的R&'}的R& Z! %21J'!1〜ZXY&安培; 1" R %% 1TZedBEAB"

这是我的代码:

def decoded(s):
    for i in range(1,95):
        string = ""
        for char in s:
            if(ord(char) + i > 126):
                charc = (ord(char) + i) - 94
                string =  string + chr(charc)
            else:
               charc = ord(char) + i
               string =  string + chr(charc) 

        print(string)
decoded("T! x$r&'}r&z! %21j!'1~zxy&1\"r%%1TZedBEAB?")

正如您所看到的,我添加了\,但我认为这不会改变我的答案?

问题在于它没有打印出正确的答案。有人可以告诉我我的代码有什么问题,或者只是指出我正确的方向。

2 个答案:

答案 0 :(得分:0)

  

关键#78:恭喜!您可以通过CITS1401。

您只需在第6行将-94更改为-95

如果你得到127并减去94,你得到33,你希望它是32.(正如Antti Haapala指出的那样)。

如果你倒退并取ord(char) - i < 32,如果真的那么加95,你就会得到#17键。

答案 1 :(得分:0)

这是一个可以加密和解密的代码。它甚至返回格式! (例如资本,下)

(10, 3, 3)