#维格纳密码 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)
程序正确加密但不正确解密有人来解释什么不对
您正在加密和解密中对
CodedMessage
变量使用上限检查(即if CodedMessage > 90:
)。这适用于encrypt,因为您希望编码的消息ASCII十进制代码大于原来的值,因为您正在添加keyencrypt。但是,对于解密,您不是在添加密钥,而是在减去密钥:这意味着您现在期望
CodedMessage
比以前小,这使得更高的界限检查没有用。然后可以将代码更改为:试试这个:
以下是我在diff格式中所做的更改:
相关问题 更多 >
编程相关推荐