Python實現凱撒密碼演算法及暴力破譯凱撒密碼演算法
阿新 • • 發佈:2018-12-15
一、凱撒加密法是什麼?
加密原理非常簡單,就是對字母表中的的每個字母,用它後面的第key個字母來代替。例如:
明文:meet me after the toga party
密文:PHHW PH DIWHV WKH WRJD SDUWB
其中key=13。
我們可以使每個A~Z中每個字母依次對應0~25等26個數字。
那麼加密演算法可以如下表達,對每個明文字母p,代替成密文字母C:C=E(key,p)= (p+key)(mod26)
則解密演算法可寫成:p=E(key,C)= (C-k)mod(26)
二、用Python實現加密解密演算法。
直接上程式碼:
#凱撒密碼加密解解密演算法 import pyperclip #匯入pyperclip模組,以便稍後呼叫pyperclip.copy()。用於複製文字到貼上板 LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' print('加密請輸入E,解密請輸入D') mode = input() if('E' in mode): #加密部分 print('請輸入要加密的內容:\n') massage = input() massage = massage.upper() #把資訊全部變成大寫 translated = '' print('請輸入加密的金鑰(0~26):') key = input() for symble in massage: #從第一個字母開始遍歷massage,如果在letters裡面則繼續加密,若不在,則直接打出字元 if symble in LETTERS: num = LETTERS.find(symble) #去該字母在LETTERS中的角標 num = num + int(key) #角標加上金鑰,int()的作用第將key強行轉化成整型 if num >= len(LETTERS): num = num - len(LETTERS) translated = translated + LETTERS[num] else: translated = translated + symble print(translated) pyperclip.copy(translated) elif('D' in mode): #解密部分 print('請輸入要解密的內容:\n') massage = input() massage = massage.upper() #把資訊全部變成大寫 translated = '' print('請輸入加密的金鑰(0~26):') key = input() for symble in massage: #從第一個字母開始遍歷massage,如果在letters裡面則繼續加密,若不在,則直接打出字元 if symble in LETTERS: num = LETTERS.find(symble) #去該字母在LETTERS中的角標 num = num - int(key) #角標加上金鑰,int()的作用第將key強行轉化成整型 if num < 0: num = num + len(LETTERS) translated = translated + LETTERS[num] else: translated = translated + symble print(translated) pyperclip.copy(translated) #複製結果到剪貼簿
三、暴力破譯凱撒密碼演算法
由於凱撒密碼破以後的所有結果也就只有25種,所以破譯成本較低。