1. 程式人生 > 其它 >凱撒密碼法、單表加密法和維吉尼亞密碼法

凱撒密碼法、單表加密法和維吉尼亞密碼法

技術標籤:密碼學加密解密區塊鏈ssl

文章目錄

01 凱撒密碼法(Caesar cipher)

簡易指數:★★★★★

簡介:

凱撒密碼就是最早由凱撒大帝使用的軍事加密方法。對於一段寫好的文字,把每個字母改寫成字母表中比它靠後三位的字母即可。

比如原本是 A 的字母改寫成 D,原本是 B 的字母改寫成 E,具體的對照資訊見下表:

明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC

以下是一個例子:

明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG密文:WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ

當然,字母表的挪移位數可以是 1 到 25 中間的任何數,你可以選取一個對方喜歡的或有紀念意義的數字作為移位數。

適用條件:

凱撒密碼極易被破解,但是足夠簡單,適合私密傳送簡簡訊息。

02 單表加密法(monoalphabetic cipher)

簡易指數:★★★★✰

簡介:

凱撒加密法是將字母表順序平移,但實際上,密文字母表可以是沒有任何順序的,對方只需要知道明文和密文的對應關係即可,比如下面的對應關係:

明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ密文字母表:ZEBRASCDFGHIJKLMNOPQTUVWXY

以下是用上表對應關係加密的例子:

明文:flee at once. we are discovered!密文:SIAA ZQ LKBA. VA ZOA RFPBLUAOAR!

這種加密法不一定要把明文字母表和密文字母表的對應關係都列出來,我們可以定義一個鑰匙詞(keyword),把這個詞放在密文字母表的最前面,再把其他字母按原有順序排列。在上面的例子中,鑰匙詞就是 zebras。

如果是情侶間的通訊,相比於凱撒密碼只能定義一個數字作為金鑰,單表加密法的鑰匙詞就可以更有意義。

適用條件:

單表加密法同樣易被破解,適合私密傳送簡簡訊息。

03 維吉尼亞密碼法(Vigenère Cipher)

簡易指數:★★★

簡介:

維吉尼亞密碼法出現在單表加密演算法已經被密碼專家發現破解之道後,在一段時間裡被稱為「不可破譯的密碼」。加密/解密時,需要一個金鑰和一個表格(維吉尼亞表格)進行對照:

程式設計師如何優雅地在七夕表白?

這個表格的每一行可以理解為上一行字母表向後移動一位的凱撒密碼錶。

假定明文為 ATTACKATDAWN,金鑰是 LEMON,那麼加密後的結果就是 LXFOPVEFRNHR:

明文:ATTACKATDAWN金鑰:LEMONLEMONLE密文:LXFOPVEFRNHR

加密的方式是先將金鑰重複展開,並與明文對應,金鑰的第一個字母是 L,對應的明文為 A,則尋找 L 行 A 列對應的字母,結果為 L;金鑰第二個字母為 E,對應的明文為 T,表格中 E 行 T 列的字母為 X,密文則為 X,其餘加密以此類推。

解密的過程只要獲取金鑰後逆向找到字母對應的列名即可。同樣的,維吉尼亞密碼法需要設定一個金鑰,情侶間的通訊可以讓這個金鑰更有意義。

適用條件:

相比於單表密碼法,想要破解維吉尼亞密碼需要更高的技巧,如果你周圍沒有學過相關課程或從事相關專業的人對你的隱私好奇,這種加密法相對更加安全。