凯撒的密码 - 解密不起作用(Python)

时间:2017-05-13 17:32:42

标签: python encryption

我用Python编写了一个简单的加密程序。 加密效果很好,但解密却没有。 当我输入1到位移时,每个字母都有效,但最后一个(Z)没有。 当我输入2 Y时,Z不会解读。

一个例子: 消息:XYZ和位移是1,结果是:yza,当我解读时,它看起来像这样:xy`

choise=input("Enter 1 to encryption or 2 to decryption: ")
text=input("Enter a message: ")
displacement=int(input("Enter displacement: "))
ready=True
if displacement<0 or displacement>26:
    print("Enter 1-26")
    ready=False
print("Original message: ", text)
message=""
index=0

if ready==True:
    if choise=="1":    
        while index<len(text):
            i=ord(text[index])
            i=i+displacement
            index=index+1

            if i>ord("z"):
                i=i-26

            char=chr(i)
            message=message+char
        print("Encrypted message: ",message)


    else:
        if choise=="2":
            while index<len(text):
                i=ord(text[index])
                i=i-displacement
                index=index+1

                if i>ord("z"):
                    i=i+26

                char=chr(i)
                message=message+char
            print("Decrypted message: ",message)
        else:
            print("You have to enter 1 or 2 when choosing.")

1 个答案:

答案 0 :(得分:2)

问题当然在if i>ord("z"):。它应该是if i<ord("a"):,因为你正在减去。

请注意,当您使用大写和小写字母时,这将不会继续有效。