如何将另一个密钥添加到vigenere密码

时间:2016-02-07 14:44:17

标签: python encryption vigenere

我正在编写一个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 个答案:

答案 0 :(得分:1)

key开始时,您可以将keys更改为keys。然后检查if isinstance(keys, str)是否为字符串。 (keys = [keys])如果是,请说for使其成为列表。然后,将其余功能放在for key in keys:循环中,如下所示:{{1}}