gpt4 book ai didi

python - 维吉内尔密码输出包括原始消息

转载 作者:太空宇宙 更新时间:2023-11-03 17:37:14 24 4
gpt4 key购买 nike

我对 python 很陌生,在让 vigenere 密码程序工作时遇到一些麻烦。该程序将接收一条消息和一个关键字,并允许用户根据给定的信息加密或解密该消息。我添加了下面的代码。

LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

def main():
myMessage = input("Message:")
myKey = input("Key:")
myMode = input("Encrypt or decrypt:")

if myMode == 'encrypt':
translated = encryptMessage(myKey, myMessage)
elif myMode == 'decrypt':
translated = decryptMessage(myKey, myMessage)

print('%sed message:' % (myMode.title()))
print(translated)

def encryptMessage(key, message):
return translateMessage(key, message, 'encrypt')

def decryptMessage(key, message):
return translateMessage(key, message, 'decrypt')

def translateMessage(key, message, mode):
translated = []

keyIndex = 0
key = key.upper()

for symbol in message:
num = LETTERS.find(symbol.upper())
if num != -1:
if mode == 'encrypt':
num += LETTERS.find(key[keyIndex])
elif mode == 'decrypt':
num -= LETTERS.find(key[keyIndex])

num %= len(LETTERS)

if symbol.isupper():
translated.append(LETTERS[num])
elif symbol.islower():
translated.append(LETTERS[num].lower())

keyIndex += 1
if keyIndex == len(key):
keyIndex = 0
else:
translated.append(symbol)
return "".join(translated)

if __name__ == '__main__':
main()

当我运行该程序时,它会出现以下内容:

Message:hello
Key:pizza
Encrypt or decrypt:encrypt
Encrypted message:
whmeklklo

当它对信息进行加密时,它包括原始消息中的字母以及加密后的字母。我对如何解决这个问题有点困惑。

最佳答案

您将在新字符串中添加原始字符:

else:
translated.append(symbol)

如果你删除它,它应该可以工作。

编辑:您使用字符串的方式也有点尴尬,这是一个新版本的翻译,看起来更好一点:

def translateMessage(key, message, mode):
translated = ""

keyIndex = 0
key = key.upper()

for symbol in message:
num = LETTERS.find(symbol.upper())
if num != -1:
if mode == 'encrypt':
num += LETTERS.find(key[keyIndex])
elif mode == 'decrypt':
num -= LETTERS.find(key[keyIndex])

num %= len(LETTERS)

if symbol.isupper():
translated += LETTERS[num]
elif symbol.islower():
translated += LETTERS[num].lower()

keyIndex += 1
if keyIndex == len(key):
keyIndex = 0

return translated

关于python - 维吉内尔密码输出包括原始消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31051899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com