維吉尼亞密碼:維吉尼亞密碼(又譯維熱納爾密碼)是使用一系列凱撒密碼組成密碼字母表的加密算法,屬於多表密碼的一種簡單形式。
在一個凱撒密碼中,字母表中的每一字母都會作一定的偏移,例如偏移量為3時,A就轉換為了D、B轉換為了E……而維吉尼亞密碼則是由一些偏移量不同的愷撒密碼組成。
例如:
明文:ATTACKATDAWN
密鑰:LEMON
密文:LXFOPVEFRNHR
用數字0-25代替字母A-Z,維吉尼亞密碼的加密文法可以寫成同余的形式:

解密方法則能寫成:

對應表格:

解密:
1 c = input("請輸入密文") 2 a = input("請輸入密鑰") 3 key = [ord(i)-97 for i in a]*b #b是一個適宜的長度 4 m = '' 5 for i in range(len(c)): 6 if c[i].islower: 7 m = m+chr(97+(ord(c[i])-97-key[i])%26) 8 if c[i].isupper: 9 m = m+chr(65+(ord(c[i])-65-key[i])%26) 10 print(m)
利用pycipher:
1 import pycipher 2 pycipher.Vigenere('computer').encipher{'加密的內容'} #加密 3 4 pycipher.Vigenere('computer').decipher{'解密的內容'} #解密