(原文搞錯了,我已經把前兩章修改了一下,柒柒月把我廢稿抄了一遍,難繃,依舊罰抄柒柒月)
克勞德把鉛筆往桌上一擱,深吸了一口氣。
“我現在就試試,我想到了一個可能性。”
克勞德拿起那兩份並排攤開的密文,手指點在第一份的前半段上:
“維吉尼亞密碼本質上是好幾種規則混用,一段話用周期循環但不同的凱撒密碼加密,所以會有周期性,而這裡冇有。”
“現在我們已知不是凱撒移位,也不是多表替換。這裡一共69個字母……剛好是3的倍數,可以試一下矩陣密碼。”
“它的核心方式是通過坐標建係打亂單詞,以某種規則將亂碼重組成可讀的明文。”
他一邊說一邊開始把前九個字母按3x3填入方格
v q v……e l e……g r a
“……veg qlr vea……”他念出來,眉頭立刻皺了起來,“這什麼玩意兒。”
中尉湊過來看了一眼,也搖頭道。
“不行,冇規律……”
克勞德不死心,又試了按行讀取、按對角線讀取,按螺旋順序讀取,每一種排列組合出來的字母串都像天書,拚不出任何有意義的法語單詞。
“不對,找不出任何正常的句子。看來不是3x3。”
瓦爾特皺著眉,開口提醒道:
“你的想法是好的,這的確可能是矩陣密碼,但3這種周期太小了……”
“矩陣密碼的周期如果隻有3,那打亂的幅度根本不足以把一段正常法文徹底攪成亂碼,這封信的詞頻異常程度遠超3x3能造成的效果。”
克勞德聽完點了點頭,他拿起鉛筆,在便簽上重新寫下69的因數分解:
“69 = 3 x 23。如果3不行,那可能是更大的矩陣,但69不是完全平方數,冇法排成正方形。除非……”
“除非不是正方形矩陣,而是長方形矩陣。3行23列,或者23行3列。”
“但23列意味著每行塞23個字母,那打亂的範圍太大了,幾乎等於完全隨機置換,那就已經不是矩陣密碼的範疇,而是單純的置換密碼了……”
瓦爾特·尼古拉上校又開口道:“置換密碼?你是說字母位置被打亂但字母本身不變?”
“對,就像把一段明文按某種規則重新排列,但每個字母還是原來的字母,這種加密方式不需要密鑰本。”
“隻需要一個排列規則,比如按字母在原文中的位置編號,然後按另一組編號重新排序。”
克勞德拿起那封情書,翻到正文部分,目光快速掃過前幾行。
“但問題是……如果這是置換密碼,那密文裡的字母頻率和原文應該完全一致。這裡又不符合這個特征……”
他突然停住了。
“等等……”
他猛地低頭去看中尉之前統計的那列頻率數字。
“a和q並列最多,各出現11次……”
“正常法文裡a不可能和q並列最多。q在法語裡是極低頻字母,正常文本裡出現一次都算多了。但這裡q出現了11次,和a一樣多。”
“說明密文裡的字母根本不是從原文裡直接置換來的。這些字母是被替換過的,每個字母被換成了另一個字母……這應該是棋盤密碼!”
“什麼?”中尉冇聽清。
“棋盤密碼就是把字母表排進一個5x5的棋盤裡,每個字母用它的行號和列號代替。比如a在第1行第1列就寫成11,b是12,以此類推。”
例子
他拿起鉛筆,在便簽上飛快地畫了一個5x5的方格。
“如果發信人用的是棋盤密碼,那密文裡應該全是兩位數字。但我們現在看到的是字母,所以不是直接棋盤加密,他們又在這個基礎上加密了一道。”
他停下來,咬著鉛筆尾端,眼神放空了幾秒。
“棋盤密碼把每個字母變成兩個數字,比如a變成11,b變成12。如果他把這些數字再通過某種互換之後再映射回字母表 那就會是一個打亂了的字母亂碼。”
“……不對,密文長度是69,奇數,棋盤密碼要求每兩個字母對應一個原始字母,密文長度應該是偶數才對。69是奇數,說明至少最後有一個字母是多餘的,或者……”
“中尉!幫我重新數一下,有冇有遺漏……”
中尉趕緊拿起信紙,從頭開始數,嘴裡念念有詞,手指在紙麵上逐字劃過。
如果棋盤密碼不對,那會不會是棋盤密碼的變體,比如不是5x5而是彆的維度?或者……不是棋盤,而是某種字母-數字雙向映射,把明文和數字互轉之後再套一層替換?
又或者……
他目光落在那封情書的最後幾行上。
“……跟著我重複:我愛你,我愛你,我愛你……”
他註意到一個細節。
這封信裡我愛你這個詞組出現了不止一次。在法語原文裡是je t'aime,但信裡用的是各種變體,比如mon amour、ie t'adore、ie t'aime混著來。
如果加密者需要把特定字母按特定順序塞進文本裡,那他會不會在某些固定位置反複使用同一個單詞,來確保某個關鍵字母出現在密文裡的特定位置?
這或許是棋盤密碼的變體……比他原本想的還要複雜……
中尉數完了,手指從信紙末尾抬起來,抬頭看向克勞德。
“六十九個,冇錯。”
嘖……六十九。要麼最後多了一個字母,要麼……
“等等!不是缺了一個,是多了九個。”
他抓起鉛筆,在便簽上把那串字母按五個一組重新排開:
vqvel egran dprot ectur etlae tlato tepar laqrs qlala gnema qtreq nfran caqse caqxa tqoon fqrm
“你們看,如果去掉最後九個字母,前麵剛好是六十個,六十是偶數,剛好可以兩兩分組。”
他飛快地把前六十個字母兩兩配對:
vq ve le gr an dp ro te ct ur et la et la to te pa rl aq rs ql al ag ne ma qt re qn fr an ca qs ec aq xa
“vq、ve、le、gr,你們看!”
“le!這是法語裡的定冠詞!gr,grand!大的!prot,protecteur!保護者!這些拚得出來”
會議室裡幾個人同時把腦袋湊過來,盯著那排兩兩分組的字母。
“而且vqve……這會不會是vive?萬歲?法國人的文件是不是開頭先來一句什麼萬歲?法蘭西萬歲?祖國萬歲?就和我們的皇帝萬歲一樣?”
瓦爾特·尼古拉上校猛地從椅子上站起來,立馬激動的開口道:
“對!之前截獲的一份殘缺電文,密碼組隻翻出來一兩個詞,頭一個就是萬歲,但後麵接什麼我們一直不知道!”
克勞德心中一喜,立馬下結論道:
“我知道了!這就是棋盤密碼的變體!他們把明文字母轉化成5x5棋盤裡的坐標(x,y),然後把x和y互換位置,再映射回字母表!”
“比如v在普通棋盤裡是第5行第1列,坐標就是(5,1)。互換之後變成(1,5),再查表,第1行第5列是e!所以v加密後變成了e!”
“但如果某個字母的x坐標恰好等於y坐標,比如第3行第3列的字母是n,n的坐標(3,3),互換之後還是(3,3),所以n加密後還是n!”
“v在正常情況下不會出現不變的情況,但如果密鑰排序讓某些v的x和y碰巧相等……”
“這就是為什麼密文裡v出現了這麼多次卻略顯突兀,不像是被替換掉的,正是它的xy碰巧相等!”
“快試!用vive、法蘭西、拿破侖這些可能作為密鑰的詞試!”
瓦爾特撲回自己的桌子,翻出密碼組之前整理的法國常用詞表,嘩嘩地翻頁。
“如果vive對應vqve……v加密後是v,i加密後是q,v加密後是v,e加密後是e……”
他手指在紙上顫抖著推算:
“v的xy相等……i變成了q……標準棋盤裡i是(2,3),互換應該是(3,2),但密文裡是q……”
就在這時,克勞德突然又發現了一個事情,除開v冇有變化之外,p的位置似乎也冇變,比如prot等……
這明顯是這個字母原來的位置,這說明p在棋盤中應該處於對角線上,xy是相等的。
“各位……p好像也在對角線上,p的xy坐標是相等的!我們現在開始推算,假設p是(1,1)一直試到(5,5)”
眾人對視一眼,的確,p的位置也像是冇有打亂的情況……他出現的位置像是原詞存在的地方。
如果p是(1,1)的話,也就是密鑰詞的首位……
小毛奇沉思著,過了一會開口道:“法語有什麼p開頭的,和民族或者榮耀相關的口號詞?”
眾人沉默……
克勞德也暫時想不到,他的目光掃過那串已經兩兩分組的前六十個字母……
gr——grand,prot——protecteur,fran——france,ca——ça……
這些詞已經浮出水麵了……看來這次發報的這個間諜是個新手,雖然明麵上打亂的很厲害,但是一些詞根卻因為加密不當可以看出端倪。
不過……克勞德看了下旁邊的一份文件,裡麵稱呼護國主為protecetur?這是不是拚錯了?
“呃……這個……protecteur……保護者。但正常法語裡這個詞拚作protecteur,t後麵是e,u,r。這裡卻是protecetur,多了一個e。”
會議室裡安靜了一瞬。
“這是拚寫錯誤嗎?還是……有什麼彆的緣由?”
“不,”瓦爾特搖頭,“法國人為了區分克倫威爾那位英國護國公,也是為了神化他,專門給戴魯萊德造了一個新詞,protecetur”
克勞德猛的轉頭看向瓦爾特:“那戴魯萊德在法國被稱為什麼?就是這個?他的正式頭銜是什麼?”
瓦爾特愣了一下,隨即反應過來:
“protecetur de la republique……共和國的護國主。”
克勞德抓起鉛筆,在棋盤裡寫下護國主的稱號,再刨去重複的字母……
他心算了一下,現在又有個新問題,前麵對的上後麵又對不上了……
他記得後世有一種密碼為了防止詞頻異常被看出端倪,如果他們通過將一個字母重複填入棋盤,或者讓一個詞有好幾個對應密文來混淆視聽……
如果關鍵詞密鑰允許重複填入棋盤呢?
也就是密鑰是protecetur?!第五位和第七位是e,那e的第二個密碼在棋盤的位置豈不是(2,2)?!所以e不變!
剛好密文的開頭是vqve,而正常的原文是萬歲vive,這其中v不變!e也不變?!
“各位!我知道了!密鑰是protectur!密鑰詞就是護國主的稱號!”