代換密碼(Substitution Cipher)體制的加密和解密


另一個比較有名的古典密碼體制是代換密碼,它是代換密碼的一種特殊情形。

在移位密碼中,加密和解密都是代數運算,但是在代換密碼中,可以認為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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM