凱撒的加密術

2021-05-23 22:54:37 字數 2479 閱讀 3753

凱撒的加密術

| tags 標籤:加密術

, 原創

奧卡姆剃刀

發表於 2010-12-09 07:44

送上開場詩一首:我用相思作玉杯,真情當酒意相隨,愛心已醉何時醒,你似蝴蝶夢裡飛。

你可以把這首詩發給你女友,聰明的她一定能看出這是首藏頭詩,從而明白你的心意。其實,藏頭詩就是一種加密術,它通過座標變換的方式隱藏了秘密,這個例子雖然很簡單,但它反映出了加密術的本質–變換座標系。

加密術最早應用於古代戰爭,當時是靠士兵隨身攜帶的信件來傳遞情報,但總是免不了被敵方俘虜,從而使情報落入敵手,這對作戰部隊而言可是生死悠關的大事。傳說當時的凱撒大帝有乙個能加密的辦法,就在寫命令前做乙個對應表,明碼:a b c d e f….w x y z,密碼:d e f g h i….z a b c,如果他想寫baby,就用edeb來表示。

當大將收到了edeb這個密碼後,向前推3個字母,就得到了明文。這個對應表的移位數是3,當然別的數也可以,作戰前由凱撒定好移位數後通知大將們,戰時就可以進行保密通訊了。這種加密方式其實就是把座標系橫移了3格。但是,這種簡單的加密方法也很容易被敵方猜到,敵人從1到25推25次,得到25組新編碼,必有一種編碼是真實的情報內容,把這組編碼區別出來非常容易,因為其它24組都是毫無意義的字母組合,只有這一組是有意義的句子,找個識字的人就可以看得出來。

既然這種加密手段並不安全,那凱撒該怎麼辦呢?有個聰明人給他出了個主意,對應表不按字母順序寫,搞個亂序的。例如a對q,b對f,隨意配對,只要保證26個明密碼一一對應沒有重複就行了。每次出征前,凱撒就會搞個非常雜亂的明密碼對應表,然後發給大將。這招很不錯,敵人即使截獲了密文,由於不知道明密碼對應表,也很難搞明白,這其實也是座標系統的一種變換,這種方法被後人稱為「單錶系統」。

這種亂序的加密術比順序的安全多了,但它還是有乙個明顯的漏洞。以英文為例,一篇文件裡每個字母的出現次數是不同的,例如e出現的次數最多,甚至可以搞出個頻次表來,如果乙份密文中r出現的次數最多,那這個r會不會就是e呢?這個猜想很合理,即使代表的不是e,那它代表的也應是明文中出現次數較多的字母。按照這種思路試試吧,賣糕的,密碼解開了。

現在又輪到加密方糾結了,他們想,破解方是在拿明密文中字母出現的頻次做文章,如果我們能把頻次的區別消除掉,他們不就沒辦法了嗎?道理雖然很好,但怎樣才能消除這種頻次的差別呢,畢竟明文中字母的頻次就是不一樣,這本身沒法改變啊。

功夫不負有心人,有一天加密方終於找到了解決問題的關鍵,這個關鍵就是「多表」,每個明文都對應多個密文,例如圖上的a分別對應著xgv,這三個密文的選擇取決於明文的位置,a在第一位時選x,第二位時選g,第三位時選v。將整個一段明話按三位一段進行分組後就可以加密了。這個例子是三維的,維數還可以更多,那就更難破譯了。這種多表系統非常有效,但其實還是有統計規律可循的,只是短短一段密文是不足以找到規律的。

這種對應規律相對固定的多表系統,還是給破解帶來了突破口。隨著技術的發展,人們開始嘗試用機械改良這種多表系統,通過引入更多的變化來增大破解的難度。二戰期間德軍有一種加密轉輪機,四個輪子負責把輸入的明碼置亂成密碼,其對應規律是動態變化的,使破譯難度大大增加。有乙個負責管理加密轉輪機的德軍軍官漢斯.施密特,為了錢與盟軍情報人員勾搭上了,他提供了該機的技術資料,得到了相當於現在1千萬法郎的報酬,後來他害怕了想退出,但已經由不得他了,他先後與盟軍情報人員接頭34次,波蘭頂級數學家裡傑斯基等人在這些絕密情報的幫助下終於將該轉輪機完全破解。

還是回到凱撒吧,他當然知道自己的加密術並不很安全,送情報的士兵被抓後受刑不過就會把密信交出來,如果防止傳令兵被俘後洩露情報呢?有人又給他出了一招:把一批士兵的頭髮剃光,並用火烙鐵在腦頂上烙上不同的印跡,並對哪個兵烙上什麼樣的疤做好記錄,被烙的士兵一頭霧水,不明白這是為什麼。大戰之前,凱撒召集大將,並要求他們牢記一組對應關係,梅花疤代表「馬上率部向我馳援」,三角疤代表「固守陣地」等等。

戰鬥中凱撒被圍困了,情況很危機,他拿來了記錄本,把烙梅花疤的幾個人都點了出來,命令他們沿不同的路線到大將處報到,「不用我們傳個口信或帶個情報嗎?」這些人很不解,「不用,你們到大將處報個到就算完成了任務」凱撒說到。這些人出發了,有的人成功地找到了大將報到,大將二話不說,立即給他剃頭查疤。也有的人被俘,嚴刑拷打也問不出情報,因為他的確不知道情報。距離剃頭烙疤的時間已經很久了,士兵新長出的頭髮已經遮蓋了烙疤,敵人也輕易察覺不到這個蹊蹺。

加密後的密文即使擺在敵人面前,他們也搞不清楚其真實內容,但讓他們知道了這是件隱藏著重要情報的密文,就會拼命破解,這總歸不是好事。如果密文擺在他們面前,他們竟然毫無察覺,那當然更好了,這就是隱寫術。凱撒給傳令兵頭上烙疤就是隱寫術的鼻祖。諜報**裡經常會介紹到這樣的場景,潛伏者用澱粉水寫情報,晾乾後再在上面寫一封信作為掩護,收信者並不關注信的內容,而是在信紙上塗上一層碘,澱粉水情報就會變成藍色顯示出來了。這樣的一封信,即使讓特務機關拆開審查,只要不知道這個門道,那什麼也查不出來。

很多加密術看起來非常巧妙,但隨著計算機的誕生,這些被稱為古典密碼術的方法全部失效,因為它們根本抵擋不住計算機的窮舉分析。現代密碼學的思路跟古典密碼術非常不同,它是先找出乙個數學難題,然後把加密方法歸結到這個難題,若解不出這個數學難題就破解不了他的密碼。隱寫術也逐漸脫離了物理和化學反應,而是與加密術結合了起來,把秘密隱藏在資料中,現代密碼學更加引人入勝,且等以後慢慢道來

凱撒密碼,凱撒加密解密

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.linq using system.text u...

python中凱撒密碼加密 凱撒密碼加密

您似乎是在互動式提示中輸入此 而不是將其儲存為檔案並執行它。如果是這樣,那麼當您使用input時,視窗將在允許您繼續輸入 之前提示您輸入。在plaintext input python 輸入此行後,鍵入要加密的單詞,然後按enter鍵。只有這樣你才能寫下這行 在開始下一行code 之前,您應該輸入所...

凱撒加密法

凱撒加密法,或稱愷撒加密 愷撒變換 變換加密,是一種最簡單且最廣為人知的加密技術。它是一種替換加密的技術,明文中的所有字母都在字母表上向後 或向前 按照乙個固定數目進行偏移後被替換成密文。主要思想 與rot13方式相似,向後向前偏移進行加密解密 加密 def encrypt caesar shift...