绘楠皱着眉专心致志地切冰淇淋华夫饼。这个人像小孩子的地方太多,恐怕也只有嗜好甜品这一条算得上可爱。据他说是因为大脑运动量太大,需要供给能量――在我看来就是纯粹的嘴硬而已。
我从提包里翻出了第二篇密文想递给绘楠,见他切得认真也不好打搅,耐心地等了一会儿,却发现绘楠的动作却越来越细致。我郁闷道:“你是要切完喂蚂蚁吗?”
都已经切成1/12的大小了。
绘楠慢条斯理地叉起冰淇淋:“等不及的话,青浦先生来喂我啊。”
“哈?”
绘楠放下叉子,撑着桌面向我压过来,表qíng一瞬间变得很有气势:“我说,喂我啊,青浦先生愿意吗?”
“怎、怎么可能!”
“所以啊,青浦先生根本没有在努力。”
绘楠恢复了懒洋洋的样子坐回原位,专心致志吃他的冰淇淋华夫饼。我的目光黏在他餐叉上融化的巧克力上,整个人茫然又尴尬。
“大概是某种有密钥的加密方法。”
终于收拾完冰淇淋,侍者送来的咖啡恰到好处地打破了尴尬的气氛,绘楠翻看着我带来的密文,给出了初步的结论。这一篇比之前篇幅长了很多,足足有三页纸,绘楠却一直只在看第一页:“破译方法跟Affine加密不太一样,可能需要一些时间――”
绘楠说着,露出了惹人厌的自负笑容:“正好待会儿我要回研究室,青浦先生有空吗?简单的题目,刚好可以拿来给青浦先生演示一下思路。”
“有是有……你觉得这一题很简单?”
我要被挫败感淹没了。
“青浦先生听我讲完也会觉得很简单的。”
绘楠熟练地从我的提包里抽出了活页簿。我看着他行云流水的开锁动作,无奈道:“公文包的机械密码……这种也能破译吗?”
我的提包主要用来装书稿。虽然三流作家的文稿不值什么钱,包上还是依据责编松尾先生的严格要求挂上了密码锁。我从来没有告诉过绘楠的密码,他却总能很快猜出来,还出过不止一次我忘记了刚换的密码、不得不拜托绘楠帮忙打开提包的乌龙事。
“机械锁的确是有技巧可以破解的,不过对象是青浦先生的话,”绘楠一耸肩,“那些技巧根本用不上,基础的社会调查就足够了。青浦先生都懒得动脑,密码全都是熟悉的数字,出生年月日,My number末位数,家里的邮政编号――全部试一遍,肯定能打开。”
啊,啊,又来了。绘楠战车迅疾地碾过来,我的自尊心像玻璃匣子似的碎了一地,就算被嘲讽为懒得动脑子,也完全没有立场反驳。
绘楠无视了我怨念的目光,把困扰我整整一天的“简单题目”塞回了活页簿。修长的手指在书页上翻过,停留在已经成功破译、被我标记了红色爱心的第一篇密文上,绘楠没头没脑地来了一句:“青浦先生再qiáng硬一点……就好了。”
诶?
我疑惑地看向绘楠,他却不再说话了,就那样侧着脸望着窗子上映出的倒影,嘴角微微抿起,仿佛有一点点失落。
晚饭后,绘楠带我到了qíng报科学所的会客室,把稿纸放进了扫描仪:“虽然不是很困难,但这次的密文破译步骤比较繁琐。总之,要先把笔记作者的手稿变成电子稿。”
“需要我去录入吗?”
“这台扫描仪带有图像文字转换软体,对印刷体准确率有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,只觉得头都大了:“知道密钥还好……没有密钥的qíng况下,真的可以破译吗?”
“的确很难,毕竟是欧洲流传了很多年的加密方式,不会被太轻易地破译。但诀窍也不是没有,”绘楠一边讲解一边在明文后面加了几个单词,又写下对应的密文,“像这样,因为明文有重复的单词,重复间隔是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了,更长的单词重复则更加不可能。大致可以认为这样的重复间隔就是密钥长度的整数倍,接下来只要数出重复间隔,计算约数就可以得到可能的密钥长度。”
我觉得有点头痛:“但是这样,不是要去数全篇相同单词出现的次数吗?而且也不一定会这么巧有重复的单词吧?”
在正常的文本里我不介意做这种劳动,但是密文就好像一堆乱码,我实在没信心能正确无误地对比出所有单词;万一认真数完了却没有重复的单词,也很难知道是确实不存在还是数错了。
“不需要青浦先生亲自来数,”绘楠像魔法师一样做了个摘下礼帽的动作,华丽地一鞠躬,“好不容易到我的主场,请青浦先生安心观赏我的演出。”
说着叫我安心观赏,绘楠照样是把我扔去校对,自己去研究室把笔记本抱过来,开始敲敲打打。看在他勤奋编写破译算法的份上,我勉qiáng原谅他了。
检索软体开始运行的时候,我非常认真地拜了拜电脑。绘楠被我的动静搞得哭笑不得:“又不是找不到就解密不了了……只要努力写出正确的算法、使用了足够的计算力就肯定可以解出来。这种事qíng都是数学上的必然。”
我反驳道:“虽然没有重复的单词也有办法得到明文,为了减小计算量,快点得到结果,还是能找到重复的单词最好吧。”
遇到绘楠之后我的运气向来不错,此前是好端端就会招惹到火灾的体质,现在去便利店居然能抽到想要的招待券了。不知道是不是这种体质使然,这次也很幸运地检索到了重复的六字母单词,之间的间隔虽然长达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、乃至余0qíng况下合并的密文高频字母和数据库里英文文本高频字母的顺差,绘楠和我得到了由10个字母组成的密钥:
Rendezvous
“是个法语词啊,”我摸了摸下巴,这个词还蛮常见的,“ランデブ`,译作相遇吗?好像也不太贴切……应该说是约会。”
绘楠微微皱起眉:“那个词,ランデブ`的原文,法语的念法好奇怪。”
“Rendezvous?”我一时没反应过来,“还好啊,没什么特别的。”
“那个R的发音,”绘楠试着模仿了一下,“不是假名的ラ也不是英文的r。”
“啊,小舌音吗,的确对不会法语的人来说比较困难……”
……不会法语?
大发现!全能jīng英绘楠的致命缺憾!
我心中得意万分,故意模仿绘楠平时的口吻道:“诶?绘楠都不会法语的吗?太懒散了吧。”
我满心期待着把绘楠呛到哑口无言,绘楠却只是怔了一下,侧头望着我,疑惑道:“青浦先生希望我去学吗?”
略为停顿,绘楠的眼神沉淀下来,整个人的气场瞬间变得认真:“只要青浦先生说是,我就去报语言班,一定能在今年内达到跟青浦先生日常会话的水准。”
“等、等一下!”我被绘楠张口就来的计划和突然变得坚定的语气打了个措手不及,“你光是念书就每天学到晚上十点钟,真的有空去上语言班吗?还有啊,语言班很贵的,明明上个月刚刚买了新款滑雪板、已经沦落到找我借钱的程度……”
52书库推荐浏览: 芥末君