簡單的密碼技術——凱撒密碼(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._forward
和self._backward
兩個字符串,分別是
DEFGHIJKLMNOPQRSTUVWXYZABC
XYZABCDEFGHIJKLMNOPQRSTUVW
這裏主要通過 _transform(self,original,code)方法
這個方法是私有的,通過索引值,在code字符串裏面取值,並返回。