python密碼學Vignere密碼教程
Vignere密碼
Vignere Cipher包含用於加密和解密的Caesar Cipher算法. Vignere Cipher與Caesar Cipher算法類似,隻有一個主要區別:Caesar Cipher包含一個字符移位的算法,而Vignere Cipher包含多個字母移位的鍵.
數學方程
Vignere密碼使用多組替換,因此它也被稱為 polyalphabetic cipher . Vignere Cipher將使用字母鍵而不是數字鍵表示:字母A將用於鍵0,字母B將用於鍵1,依此類推.加密過程之前和之後的字母數字顯示在下面 :
基於Vignere密鑰長度的可能密鑰數量的可能組合如下,給出瞭Vignere Cipher算法的安全性的結果 :
Vignere Tableau
用於Vignere密碼的畫面如下所示 :
實現
讓我們瞭解如何實現Vignere密碼.考慮文本這是Vignere密碼的基本實現將被編碼,使用的密鑰是 PIZZA.
代碼
您可以使用以下代碼在Python中實現Vignere密碼 :
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密碼的可能組合幾乎是不可能的.因此,它被視為安全加密模式.
以上就是python密碼學Vignere密碼教程的詳細內容,更多關於python密碼學Vignere的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Python密碼學Caesar Cipher凱撒密碼算法教程
- python密碼學換位密碼及換位解密轉置加密教程
- Python進行密碼學反向密碼教程
- Python使用Crypto庫實現加密解密的示例詳解
- python密碼學一次性密碼的實現