如何将另一个密钥添加到 vigenere 密码中
Posted
技术标签:
【中文标题】如何将另一个密钥添加到 vigenere 密码中【英文标题】:How to add another key into a vigenere cipher 【发布时间】:2016-02-07 14:44:16 【问题描述】:我正在编写一个 vigenere 密码,并想添加另一个密钥。这进一步加密了我输入的文本。谁能解释如何做到这一点?
LETTERS = 'ZABCDEFGHIJKLMNOPQRSTUVWXY'
def main():
myMode = input("Encrypt 'e' or Decrypt 'd': ")
myMessage = input('What text would you like to encrypt: ')
myKey = input('Enter your key: ')
myKey2 = input('Enter your second key: ')
if myMode == 'encrypt' or myMode == 'e':
translated = encryptMessage(myKey, myMessage)
elif myMode == 'decrypt' or myMode == 'd':
translated = decryptMessage(myKey, myMessage)
print('%sYour Message: ' % (myMode.title()))
print(translated)
print()
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()
我已经创建了变量,但不确定在哪里使用它们。任何帮助都会很棒。
【问题讨论】:
【参考方案1】:translateMessage()
开头的key
可以改成keys
。然后检查keys
是否为字符串。 (if isinstance(keys, str)
) 如果是,请说keys = [keys]
将其列为列表。然后,将函数的其余部分放入 for
循环中,如下所示:for key in keys:
【讨论】:
以上是关于如何将另一个密钥添加到 vigenere 密码中的主要内容,如果未能解决你的问题,请参考以下文章
在 Vigenere 密码方法中使用多个密钥进行加密是不是安全?
如何在 vigenere cipherkey cs50 pset2 中重用(循环)密钥
使用从文件中读取明文的 Vigenere 密码进行加密 (JAVA)