簡單的密碼技術——凱撒密碼(Caesar cipher)

簡單的密碼技術——凱撒密碼(Caesar cipher)


介紹

對於加密技術最早的就是凱撒加密,凱撒密碼涉及替換情報中的每個字母,是一種最簡單且最廣爲人知的加密技術。它是一種替換加密的技術,明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後被替換成密文。例如,當偏移量是3的時候,所有的字母A將被替換成D,B變成E,以此類推。這個加密方法是以羅馬共和時期愷撒的名字命名的,當年愷撒曾用此方法與其將軍們進行聯繫。

相應代碼

主代碼
python語言實現

class CaesarCipher:
    '''Class for doing encryption(加密) and decryption(解密) using a Caesar cipher'''
    def __init__(self,shift):
        '''Construcr Caesar cipher given integar shift for ratation'''
        encoder = [None] * 26
        decoder = [None] * 26
        for k in range(26):
            encoder[k] = chr((k+shift)%26 + ord('A'))
            decoder[k] = chr((k-shift)%26 + ord('A'))
        self._forward = ''.join(encoder)
        self._backwad = ''.join(decoder)
    def enctypt(self,message):
        '''Return string representing encrypted message'''
        return self._transform(message,self._forward)
    def decrypt(self,secret):
        '''return decrypted message given encrypted secret'''
        return self._transform(secret,self._backwad)
    def _transform(self,original,code):
        '''Utility to perform transformation based on given code string'''
        msg = list(original.upper())
        for k in range(len(msg)):
            if msg[k].isupper():
                j = ord(msg[k])-ord('A')
                msg[k] = code[j]
        return ''.join(msg)

這裏創建了一個類,其中enctypt方法就是加密過程,decrypt方法就是解密過程

測試代碼

def main():
    cipher = CaesarCipher(3)
    message = 'i love you'
    code = cipher.enctypt(message)
    print('the secret message is: ',code)
    answer = cipher.decrypt(code)
    print('the real meassage is: ',answer)

if __name__ == '__main__':
    main()

顯示結果:
在這裏插入圖片描述

解釋:CaesarCipher類初始化生成self._forwardself._backward兩個字符串,分別是

DEFGHIJKLMNOPQRSTUVWXYZABC
XYZABCDEFGHIJKLMNOPQRSTUVW

這裏主要通過 _transform(self,original,code)方法這個方法是私有的,通過索引值,在code字符串裏面取值,並返回。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章