另一個比較有名的古典密碼體制是代換密碼,它是代換密碼的一種特殊情形。
在移位密碼中,加密和解密都是代數運算,但是在代換密碼中,可以認為P和C是26個英文字母,並且可以認為加密和解密的過程直接看作是在一個字母表上的置換。
任意取一置換,即可得到加密函數,見下表(小寫字母表示明文,大寫字母表示密文):
按照上表有,等等。而解密函數則是相應的逆置換。
代碼實現(Python 3)
''' 代換密碼體制加密 e.g. key='XNYAHPOGZQWBTSFLRCVMUEKJDI' ''' def substitution_cipher_encrypt(text: str, key: str): SYMBOLS = 'abcdefghijklmnopqrstuvwxyz' translated = '' text = text.lower() for symbol in text: if symbol in SYMBOLS: symbolIndex = SYMBOLS.find(symbol) translated = translated + key[symbolIndex] else: translated = translated + symbol print(translated) ''' 代換密碼體制解密 e.g. key='dlryvohezxwptbgfjqnmuskaci' ''' def substitution_cipher_decrypt(text: str, key: str): SYMBOLS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' translated = '' text = text.upper() for symbol in text: if symbol in SYMBOLS: symbolIndex = SYMBOLS.find(symbol) translated = translated + key[symbolIndex] else: translated = translated + symbol print(translated)