有人能告诉我为什么我的密码有效,但我的密码无效吗?看照片b

2024-06-26 13:56:31 发布

您现在位置:Python中文网/ 问答频道 /正文

#维格纳密码 EncryptedMessage=“” 模式=“” Keywordcount=0#将所有内容设置为0

while Mode != "encrypt" and Mode != "decrypt":
    Mode = input('Do you want to encrypt or decrypt a message?')
    Mode = Mode.lower()

if Mode == "encrypt":

    Keyword=input('Please enter the keyword you want to use:')

    Message=input('Please eneter the message you witsh to encrypt: ')

    Keywordlength = len(Keyword)

    for i in range(0, len(Message)):#

            Messageencrypt = Message[i]
            Keywordencrypt = Keyword[Keywordcount]

            if Messageencrypt.isalpha():

                if Messageencrypt.isupper():

                    Messageencrypt = ord(Messageencrypt)

                    Keywordencrypt = Keywordencrypt.upper()

                    Keywordencrypt = ord(Keywordencrypt) - 64

                    CodedMessage = Messageencrypt + Keywordencrypt

                    if CodedMessage > 90:
                        CodedMessage = CodedMessage - 26

                    Encryptedletter = chr(CodedMessage)          


                elif Messageencrypt.islower():

                    Messageencrypt = ord(Messageencrypt)

                    Keywordencrypt = Keywordencrypt.upper()

                    Keywordencrypt = ord(Keywordencrypt) - 64

                    CodedMessage = Messageencrypt + Keywordencrypt

                    if CodedMessage > 122:
                        CodedMessage = CodedMessage - 26


                Encryptedletter = chr(CodedMessage)

            else:
                Encryptedletter = Messageencrypt

            EncryptedMessage = EncryptedMessage + Encryptedletter

            Keywordcount = Keywordcount + 1

            if Keywordcount >= Keywordlength:
                Keywordcount = 0

    print(EncryptedMessage)


if Mode == "decrypt":

    Keyword=input('Please enter the keyword you want to use:')

    Message=input('Please eneter the message you witsh to decrypt: ')

    Keywordlength = len(Keyword)

    for i in range(0, len(Message)):#

            Messageencrypt = Message[i]
            Keywordencrypt = Keyword[Keywordcount]

            if Messageencrypt.isalpha():

                if Messageencrypt.isupper():

                    Messageencrypt = ord(Messageencrypt)

                    Keywordencrypt = Keywordencrypt.upper()

                    Keywordencrypt = ord(Keywordencrypt) - 64

                    CodedMessage = Messageencrypt - Keywordencrypt

                    if CodedMessage > 90:
                        CodedMessage = CodedMessage - 26

                    Encryptedletter = chr(CodedMessage)          


                elif Messageencrypt.islower():

                    Messageencrypt = ord(Messageencrypt)

                    Keywordencrypt = Keywordencrypt.upper()

                    Keywordencrypt = ord(Keywordencrypt) - 64

                    CodedMessage = Messageencrypt - Keywordencrypt

                    if CodedMessage > 122:
                        CodedMessage = CodedMessage - 26


                Encryptedletter = chr(CodedMessage)

            else:
                Encryptedletter = Messageencrypt

            EncryptedMessage = EncryptedMessage + Encryptedletter

            Keywordcount = Keywordcount + 1

            if Keywordcount >= Keywordlength:
                Keywordcount = 0

    print(EncryptedMessage)

程序正确加密但不正确解密有人来解释什么不对

This image show what is what happens when i try to decrypt


Tags: toyoumessageinputifmodekeyworddecrypt
2条回答

您正在加密和解密中对CodedMessage变量使用上限检查(即if CodedMessage > 90:)。这适用于encrypt,因为您希望编码的消息ASCII十进制代码大于原来的值,因为您正在添加keyencrypt。但是,对于解密,您不是在添加密钥,而是在减去密钥:

CodedMessage = Messageencrypt - Keywordencrypt

这意味着您现在期望CodedMessage比以前小,这使得更高的界限检查没有用。然后可以将代码更改为:

if CodedMessage < 65: #for upper letters
if CodedMessage < 97: #for lower letters

试试这个:

#Vigenere Cipher
EncryptedMessage=""
Mode=""
Keywordcount = 0 #sets everything to 0


while Mode != "encrypt" and Mode != "decrypt":
    Mode = input('Do you want to encrypt or decrypt a message?')
    Mode = Mode.lower()

if Mode == "encrypt":
    Keyword=input('Please enter the keyword you want to use:')
    Message=input('Please eneter the message you wish to encrypt: ')
    Keywordlength = len(Keyword)
    for i in range(0, len(Message)):
        Messageencrypt = Message[i]
        Keywordencrypt = Keyword[Keywordcount]
        if Messageencrypt.isalpha():
            if Messageencrypt.isupper():
                Messageencrypt = ord(Messageencrypt)
                Keywordencrypt = Keywordencrypt.upper()
                Keywordencrypt = ord(Keywordencrypt) - 64
                CodedMessage = Messageencrypt + Keywordencrypt
                if CodedMessage > 90:
                    CodedMessage = CodedMessage - 26
                Encryptedletter = chr(CodedMessage)
            elif Messageencrypt.islower():
                Messageencrypt = ord(Messageencrypt)
                Keywordencrypt = Keywordencrypt.upper()
                Keywordencrypt = ord(Keywordencrypt) - 64
                CodedMessage = Messageencrypt + Keywordencrypt
                if CodedMessage > 122:
                    CodedMessage = CodedMessage - 26
            Encryptedletter = chr(CodedMessage)
        else:
            Encryptedletter = Messageencrypt
        EncryptedMessage = EncryptedMessage + Encryptedletter
        Keywordcount = Keywordcount + 1
        if Keywordcount >= Keywordlength:
            Keywordcount = 0
    print(EncryptedMessage)


if Mode == "decrypt":
    Keyword=input('Please enter the keyword you want to use:')
    Message=input('Please eneter the message you wish to decrypt: ')
    Keywordlength = len(Keyword)
    for i in range(0, len(Message)):
        Messageencrypt = Message[i]
        Keywordencrypt = Keyword[Keywordcount]
        if Messageencrypt.isalpha():
            if Messageencrypt.isupper():
                Messageencrypt = ord(Messageencrypt)
                Keywordencrypt = Keywordencrypt.upper()
                Keywordencrypt = ord(Keywordencrypt) - 64
                CodedMessage = Messageencrypt - Keywordencrypt
                if CodedMessage < 65:
                    CodedMessage = CodedMessage + 26
                Encryptedletter = chr(CodedMessage)
            elif Messageencrypt.islower():
                Messageencrypt = ord(Messageencrypt)
                Keywordencrypt = Keywordencrypt.upper()
                Keywordencrypt = ord(Keywordencrypt) - 64
                CodedMessage = Messageencrypt - Keywordencrypt
                if CodedMessage < 97:
                    CodedMessage = CodedMessage + 26
            Encryptedletter = chr(CodedMessage)
        else:
            Encryptedletter = Messageencrypt
        EncryptedMessage = EncryptedMessage + Encryptedletter
        Keywordcount = Keywordcount + 1
        if Keywordcount >= Keywordlength:
            Keywordcount = 0
    print(EncryptedMessage)

以下是我在diff格式中所做的更改:

 - old.py  2015-11-10 14:01:31.000000000 -0500
+++ new.py  2015-11-10 13:56:52.000000000 -0500
@@ -54,7 +54,7 @@
Keywordencrypt = Keywordencrypt.upper()
Keywordencrypt = ord(Keywordencrypt) - 64
CodedMessage = Messageencrypt - Keywordencrypt
-                    if CodedMessage > 90:
+                    if CodedMessage < 65:
        CodedMessage = CodedMessage + 26
Encryptedletter = chr(CodedMessage)
elif Messageencrypt.islower():
@@ -62,7 +62,7 @@
Keywordencrypt = Keywordencrypt.upper()
Keywordencrypt = ord(Keywordencrypt) - 64
CodedMessage = Messageencrypt - Keywordencrypt
-                    if CodedMessage > 122:
+                    if CodedMessage < 97:
        CodedMessage = CodedMessage + 26
Encryptedletter = chr(CodedMessage)
else:

相关问题 更多 >