1. 程式人生 > >Python實現凱撒密碼演算法及暴力破譯凱撒密碼演算法

Python實現凱撒密碼演算法及暴力破譯凱撒密碼演算法

一、凱撒加密法是什麼?

加密原理非常簡單,就是對字母表中的的每個字母,用它後面的第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種,所以破譯成本較低。