① 密碼學基礎一
一、 愷撒密碼
1.簡單介紹
凱撒密碼是古時候歐洲常用的一種加密方式:英文一共26個字母,它的加密方式是將這26個字母分別平移固定的位數,
假設位數=3,那麼A=>D,B=>E,如下圖:
如果想加密一個單詞HELLO,根據上面的唯一對比,加密後的結果應該是LHOOR。顛倒字母後的順序,使得常人無法讀懂這些語句或者單詞。如何解密呢,也很簡單,只需要將收到的單詞向前平移3個位置,就可以恢復到加密前的單詞HELLO了。
2.破解
破解凱撒密碼的方法很多,有一種暴力破解的方式,就是「遍歷」。根據凱撒密碼的加密方式,平移固定的位數,26個英文字母總共可以平移的方式是26種,假如位數n=26,其實相當於沒有平移,A=>A,循環了一次。
進行暴力破解:
n=1:LHOOR=>KGNNQ
n=2:LHOOR=>JFMMP
n=3:LHOOR=>HELLO
這樣就破解了,可以推算發位數n=3,其實就是秘鑰=3,
最多嘗試25次即可推算出加密的n值等於多少(當然這里只是討論原理,不排除真實情況,可能湊巧某一個錯誤的n值解密出來的也是一個完整的單詞或一段話的情況)。
二、 替換密碼
1.簡單介紹
替換密碼和愷撒密碼原理有些類似,個人感覺相當於愷撒密碼的變種,替換密碼增加了字母替換的隨機性.
舉個簡單的例子,A=>G,B=>X,C=>K
這里ABC..等26個字母都隨機指向了「密碼」本上的另一個隨機的字母,這下就比較難反向推算出「秘鑰」是多少了,數量級完全不一樣。
簡單的算一下可能存在的情況:
A=>有25種表示方式BCD…
B=>有除A以外24種方式表示CDE..
…
那麼秘鑰的存在情況是:
N=25!種方式,遠遠大於愷撒密碼的26。
2.破解
面對25!數量級的加密方式,使用暴力破解的方式不再實用了,但是可以使用另一種方法,統計學
通過大量掃描英文書籍,可以得出如下結果(,這里只探究原理,並不追究這個統計的准確性):
26個字母在日常用語中的使用頻率並不一樣,比如字母E的使用頻率遙遙領先,字母Z使用頻率最低,這個相當於語言所殘留在文字中的指紋,很難察覺但是真實存在。
根據這個原理,掃描「隨機密碼」文本,統計出各個字母的使用頻率分布,找出使用頻率最高的那個字母,極可能就是加密後的字母E。
3.隨機加密還有很多變種,雙重加密,擦掉「指紋」使得加密方式更進一步加固,不得不感嘆古人的智慧,數學之美真奇妙。
② 如何破解凱撒密碼
首先你需要一張抄大大的草稿紙,把二十六個拉丁字母寫上。
再在下面一行把每個字母往後推一位,錯位排列。A對應Z,B對應A,C對應B,依次類推,第一行往後推一位,第二行往後推兩位。即拉丁字母下面第二行A對應Y,B對應Z,C對應A,D對應B,一直推倒二十六位。
然後在拿著密文,先在第一行找到密文字母對應的拉丁字母,看看能不能組成句子,如果不行就在第二行找密文,翻譯成對應的拉丁字母,在第二十六行之前一定可以找到。