“军统密码体系有七层架构,从基础的凯撒位移到高级的双重置换矩阵。”余则成放下粉笔,拍了拍手上的粉笔灰,“我当年入职第一个月就默写过一遍,后来又对照实际截获的密电验证过三次。李海丰不管怎么改,骨架是换不掉的。就像一个人换了衣服,走路的姿势还是一样的。”
齐思远的眼神变了。那种变化很微妙,不是惊讶,更像是一个同行之间的认可。
“那我们从字频入手。”齐思远重新坐下,从公文包里掏出一沓厚厚的纸,“这是情报处截获的李海丰近三个月的全部电报抄件,共四十七份。我已经做了初步的字频统计。”
他把纸推到桌子中间。
余则成拿过来翻了翻,眼睛一亮。齐思远的字频统计做得极其细致,不光统计了单字母频率,还统计了双字母组合、三字母组合的出现概率,甚至标注了每份电报的发报时间、持续时长和信号强度。
“这些数据……”余则成抬起头。
“我花了三天做的。”齐思远说,“但光有统计不够,我需要你告诉我,李海丰的加密习惯里有没有什么固定的特征。比如他喜欢用什么样的密钥起始字符,或者他的置换矩阵有没有偏好的排列顺序。”
余则成把那沓纸翻到最后一页,开始在空白处写公式。
“李海丰有一个习惯。”他一边写一边说,“他做双重置换的时候,第一层的置换表永远是从密钥的最后一个字符开始反向排列的。这是他在德国学的方法,叫‘镜像回文初始化’。军统的标准教材里没有这一条,是他自己加的私货。”
齐思远从小本子上撕下一张纸,飞快地记了下来。
接下来的两天,两个人几乎没有离开过特别机要室。
白天,余则成在黑板上用公式推导密钥空间的缩减路径,齐思远在旁边默默地往表格里填数据。晚上,两个人轮流值班,一个人睡行军床,另一个人继续盯着那堆电报抄件。
勤务兵每隔四个小时送一次饭,两个搪瓷碗,两双筷子,饭菜一模一样。
他们几乎不说废话。所有的交流都围绕着数字、字母和公式。偶尔齐思远会问一个技术问题,余则成回答完之后,两个人又陷入长时间的沉默。
但那种沉默和第一天不同。第一天的沉默是警惕,是两只猎犬在互相嗅对方的气味。两天之后的沉默是专注,是两台精密机器在同步运转。
第三天凌晨两点十七分。
余则成盯着黑板上那一串密密麻麻的推导过程,突然停住了笔。
他拿起齐思远的字频统计表,翻到第二十三份电报的数据,用手指沿着那一行数字滑过去。然后他抓起一支铅笔,在草稿纸上飞快地算了一串数字。
“齐先生。”他的声音有些发紧,“你过来看一下。”
齐思远从行军床上翻身坐起来,三步走到黑板前面。
余则成指着草稿纸上的一组数字:“我把你统计的双字母组合频率代入李海丰的‘镜像回文’算法,用穷举法缩减了密钥空间。现在密钥的可能组合从原来的四千多万种缩减到了不到八百种。”
齐思远的眼睛亮了一下。