Python 密码学 - 实施 Vignere 维吉尼亚密码
在本章中,让我们了解如何实现 Vignere 维吉尼亚密码。 考虑要对文本This is basic implementation of Vignere Cipher 进行编码,使用的密钥是PIZZA。
代码
您可以使用以下代码在 Python 中实现一个 Vigenere 维吉尼亚密码 −
import pyperclip LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' def main(): myMessage = "This is basic implementation of Vignere Cipher" myKey = 'PIZZA' myMode = 'encrypt' if myMode == 'encrypt': translated = encryptMessage(myKey, myMessage) elif myMode == 'decrypt': translated = decryptMessage(myKey, myMessage) print('%sed 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 = [] # stores the encrypted/decrypted message string 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()
输出
当你执行上面给出的代码时,你可以观察到以下输出 −
破解 Vignere 维吉尼亚密码的可能组合几乎是不可能的。 因此,它被认为是一种安全的加密模式。