1. 程式人生 > >歷史著名密碼(凱撒密碼、簡單替換密碼、Enigma)

歷史著名密碼(凱撒密碼、簡單替換密碼、Enigma)

凱撒密碼

公元前100多年凱撒發明的一種密碼,簡單來說是平移密碼,也就是將字母位置向後移動一定位數。

如原文是ABCDEFG,金鑰為3,加密後就是DEFGHIJ。

以金鑰的數字向後平移了三位,如果金鑰是5就是平移五位。

凱撒密碼最簡單的破譯方式為窮舉法(暴力破解法),一共只有26個字母,平移25次並將平移後的字串進行比較,就能取得最後的原文。


簡單替換密碼

簡單替換密碼是凱撒密碼的升級版,將平移替換為無序對應。

如原文是ABCDEFGHIJKLMNOPQRSTUVWXYZ,替換後為QWERTYUIOPASDFGHJKLZXCVBNM,中間將沒有資訊關聯,需雙方各執一份對照表,才能解碼。

簡單替換法很難用窮舉法來破解,因為明文中的A可以對應所有26個字母,而B可以對應除A對應的字母意外的25個字母,那麼我們計算一下26個字母需要的金鑰數量為26 X 25 X 24 X......... X 2 = 403291461126605635584000000,金鑰的數量太大,用暴力破解,即便每秒遍歷10億個密碼,要遍歷萬需要將近120億年。

所以簡單替換法要用頻率分析來破解密碼: 

假設我們得到了一大串加密後的密文,我們統計所有密文中的所有字元出現的次數,最後得出一個其中一個字元(如“A”)的使用平率最高,那麼我們將英文字母按照出現頻率排序:ETAOINSHRDLUCMFWGYPBVKJQZ,根據這個線索,我們將密文中的“A”替換為E,我們將所有密文中的“A”替換為E,根據英文中最常見的單詞是the,我們找出密文“A”前面兩個字元都一樣的出現最多的字串,如“FEA”,將其替換為"THE",這麼來看密文“F”對應的應該是T,密文“E”對應的應該是H,我們將密文中的所有的“F”和“E”替換為T和H。我們再動員所有的英語詞彙,比如密文中有一段“FEPZZ”,我們可以將前面已知對應的密文進行解密,TH“PZZ”這時可以套用英文單詞three進行測試,將“FEPZZ”替換為THREE,那麼“P”對應的應該是R,而“Z”對應的應該是E,以此類推,我們將所有密碼破譯出來。

總結幾條:

1、除了高頻字母外,低頻字母也能是線索。

2、搞清楚開頭和結尾能個成為線索,高清單詞之間的分割也能夠成為線索。

3、密文越長越容易被破解。

4、同一個字元連續出現能夠成為線索。

5、破解的速度會越來越快。


Enigma

Enigma是德國人謝爾比烏斯發明的能個進行加密和解密操作的機器,傳送者和接收者都必須各自擁有一臺Enigma,而且必須有一份相同的密碼本,所以Enigma相當於一個加強版的簡單替換密碼。在二戰時被現代計算機鼻祖圖靈同志破解金鑰。