第5章 章節
總能很快猜出來,還出過不止一次我忘記了剛換的密碼、不得不拜托繪楠幫忙打開提包的烏龍事。
“機械鎖的确是有技巧可以破解的,不過對象是青浦先生的話,”繪楠一聳肩,“那些技巧根本用不上,基礎的社會調查就足夠了。青浦先生都懶得動腦子,密碼全都是熟悉的數字,出生年月日,My number末位數,家裏的郵政編號——全部試一遍,肯定能打開。”
啊,啊,又來了。繪楠戰車迅疾地碾過來,我的自尊心像玻璃匣子似的碎了一地,就算被嘲諷為懶得動腦子,也完全沒有立場反駁。
繪楠無視了我怨念的目光,把困擾我整整一天的“簡單題目”塞回了活頁簿。修長的手指在書頁上翻過,停留在已經成功破譯、被我标記了紅色愛心的第一篇密文上,繪楠沒頭沒腦地來了一句:“青浦先生再強硬一點……就好了。”
诶?
我疑惑地看向繪楠,他卻不再說話了,就那樣側着臉望着窗子上映出的倒影,嘴角微微抿起,仿佛有一點點失落。
晚飯後,繪楠帶我到了情報科學所的會客室,把稿紙放進了掃描儀:“雖然不是很困難,但這次的密文破譯步驟比較繁瑣。總之,要先把筆記作者的手稿變成電子稿。”
“需要我去錄入嗎?”
“這臺掃描儀帶有圖像文字轉換軟體,對印刷體準确率有99.3%,”繪楠攤平了紙頁,“雖然這裏是手寫體,應該也不會太差。青浦先生只需要稍後對照紙質版進行校正就好。”
話是這麽說,對整整三頁紙的亂碼進行校對,依然是很大的工程量。
趁着軟體工作的時候,繪楠給我科普了這篇密文的加密方式:“還不能完全确定,但我認為這篇是Vigenere、或者類似的密碼替換方法加密的。跟Affine加密法略有不同的是,Vigenere加密法會使用一個密鑰,這個密鑰讓明文與密文的字母不再是一一對應的。”
繪楠在演草紙上寫下了上一篇密文裏的歌詞,又在其下寫出了“青浦”的羅馬字,并且重複了好幾遍:“例如說,用青浦先生的'SEIHO'作為密鑰的話,明文裏'the'的t對應的密鑰是‘青浦’的'S',那對應的密文就是t往後數18位,也就是L;而明文裏'time'的t對應的密鑰是‘青浦’的'H',對應的密文則是t往後數7位,也就是A。”
The first time ever I saw your face.
SEI HOSEI HOSE IHOS E IHO SEIH OSEI.
LLM MWJWB AWEI MCSJ M AHK QSCY TSGM.
我看看明文裏兩個t與它們對應的不同的密文L和A,再看看密文裏并列的兩個L與它們所對應的不同的明文t和h,只覺得頭都大了:“知道密鑰還好……沒有密鑰的情況下,真的可以破譯嗎?”
Advertisement
“的确很難,畢竟是歐洲流傳了很多年的加密方式,不會被太輕易地破譯。但訣竅也不是沒有,”繪楠一邊講解一邊在明文後面加了幾個單詞,又寫下對應的密文,“像這樣,因為明文有重複的單詞,重複間隔是10個字母,剛好是密鑰長度的整數倍,密文就跟着重複了。”
The first time ever I saw your face, oh your face.
SEI HOSEI HOSE IHOS E IHO SEIH OSEI, HO SEIH OSEI.
LLM MWJWB AWEI MCSJ M AHK QSCY TSGM, VV QSCY TSGM.
繪楠指着密文裏對應兩個your的QSCY解釋道:“雖然明文密文不是一一對應會導致同樣密文對應不同的明文,就像密文開頭兩個L對應的是t和h兩個不同的明文,但不太可能導致整個單詞都重複。
“随便計算一下,單字母因為巧合密文重複的概率是1/26,那兩個字母的單詞因為巧合重複的概率就只有1/626了,更長的單詞重複則更加不可能。大致可以認為這樣的重複間隔就是密鑰長度的整數倍,接下來只要數出重複間隔,計算約數就可以得到可能的密鑰長度。”
我覺得有點頭痛:“但是這樣,不是要去數全篇相同單詞出現的次數嗎?而且也不一定會這麽巧有重複的單詞吧?”
在正常的文本裏我不介意做這種勞動,但是密文就好像一堆亂碼,我實在沒信心能正确無誤地對比出所有單詞;萬一認真數完了卻沒有重複的單詞,也很難知道是确實不存在還是數錯了。
“不需要青浦先生親自來數,”繪楠像魔法師一樣做了個摘下禮帽的動作,華麗地一鞠躬,“好不容易到我的主場,請青浦先生安心觀賞我的演出。”
說着叫我安心觀賞,繪楠照樣是把我扔去校對,自己去研究室把筆記本抱過來,開始敲敲打打。看在他勤奮編寫破譯算法的份上,我勉強原諒他了。
檢索軟體開始運行的時候,我非常認真地拜了拜電腦。繪楠被我的動靜搞得哭笑不得:“又不是找不到就解密不了了……只要努力寫出正确的算法、使用了足夠的計算力就肯定可以解出來。這種事情都是數學上的必然。”
我反駁道:“雖然沒有重複的單詞也有辦法得到明文,為了減小計算量,快點得到結果,還是能找到重複的單詞最好吧。”
遇到繪楠之後我的運氣向來不錯,此前是好端端就會招惹到火災的體質,現在去便利店居然能抽到想要的招待券了。不知道是不是這種體質使然,這次也很幸運地檢索到了重複的六字母單詞,之間的間隔雖然長達1070個字母,好在只有四個約數,由小到大分別是2、5、10和107。
“接下來要做大量的檢索計算,分別以2、5、10、107和1070做循環,”繪楠在演草紙上寫下這五個數字,做了一個斬斷的手勢,“把餘數相同的密文字母合并,得到類似Affine加密方法的密文,在這裏計算字母出現次數,就能解開暗文明文對應。”
“因為單詞是被密鑰切開了進行加密,不能再使用以單詞為單位的出現次數了啊……”我嘆了口氣,難怪昨天奮力計算了一早晨也沒有得到結果。
“按照世界範圍英文文本裏字母出現的規律,”繪楠在終端上打開了一個好像賽馬競技排名的頁面,“可以知道最頻繁使用的字母是'e',第二位是't',再之後是'a'。”
我則是起身湊到繪楠的筆記本前,看他編寫的檢索軟體輸出的密文字母頻率:“嗯……用10做循環和1070,餘1的密文裏,出現最多的是V,其次是X,再次是N;而用其他數字做循環的結果裏,密文字母的頻率差別沒有很明顯。”
“是V, X, N對應e,t,a嗎?”繪楠在演草紙上寫下這兩組字母,思考片刻,打了個響指,“密鑰找到了。”
“诶?”我愣了一拍。
繪楠在兩組字母之間劃上了一個減號,解釋道:“兩組字母的3個順差都剛好是R,的确是最簡單的Vigene加密,基本可以肯定密鑰第一位是R了。先不用管其他的可能,直接按照密鑰長度是10個字母的假設,把剩下的密鑰也找出來吧。”
之後,按照餘1相同的步驟,依次計算出餘2、餘3、乃至餘0情況下合并的密文高頻字母和數據庫裏英文文本高頻字母的順差,繪楠和我得到了由10個字母組成的密鑰:
Rendezvous
“是個法語詞啊,”我摸了摸下巴,這個詞還蠻常見的,“ランデブー,譯作相遇嗎?好像也不太貼切……應該說是約會。”
繪楠微微皺起眉:“那個詞,ランデブー的原文,法語的念法好奇怪。”
“Rendezvous?”我一時沒反應過來,“還好啊,沒什麽特別的。”
“那個R的發音,”繪楠試着模仿了一下,“不是假名的ラ也不是英文的r。”
“啊,小舌音嗎,的确對不會法語的人來說比較困難……”
……不會法語?
大發現!全能精英繪楠的致命缺憾!
我心中得意萬分,故意模仿繪楠平時的口吻道:“诶?繪楠都不會法語的嗎?太懶散了吧。”
我