剑桥图书馆的阅览室内,冬季的阴翳透过高窗,在长桌上投下清冷的光斑。
埃德蒙独自坐在角落,面前摊开的《数论基础》已经二十分钟没有翻页。
他的指尖无意识地摩挲着书页边缘,那里夹着一张薄纸——老陈用密写药水传递的最后一份情报的译稿:
新月号延期抵港。三号码头暂停使用。老周住院,医药费已结清。
每个字都像淬火的针。
“延期抵港”意味着药品运输线被切断;“三号码头暂停使用”代表整个联络网必须蛰伏;而“老周生病住院,医药费已结清”——那个总是憨厚地搓着手掌、说“先生放心”的码头工人老周,已经用生命付清了最后的账单,永远退出了这场无声的战争。
埃德蒙猛地起身,想要去书架区换本书平静心绪。
就在他转身时,肘部不慎撞到了垒在桌角的几本参考书。
书本滑落,连带他放在最上面的笔记本和散装手稿哗啦一声散落在地。
抱歉。
一个略显紧张的声音从旁边传来。埃德蒙低头,看见一个瘦高的年轻人正蹲在地上,小心翼翼地拾取他散落的手稿。
年轻人穿着熨烫平整但款式过时的西装,打着一丝不苟的温莎结,捡纸的动作谨慎得近乎笨拙。
当他的目光落在其中一页手稿上时,动作突然停滞了。
眼睛微微睁大,完全被纸上的内容吸引——那是埃德蒙尝试将维奇尼亚密码与古代如尼文的音节结构进行对比的笔记。
这个对应关系...
年轻人喃喃自语,食指悬在纸页上方,仿佛不敢触碰,你用符文笔画数替代了传统的位移量?
他的声音很轻,但在安静的阅览室里依然清晰可闻。
附近有个学生不满地清了清嗓子。
埃德蒙迅速蹲下,伸手接过手稿:谢谢,我自己来。
年轻人这才像惊醒般抬起头,脸上掠过一丝慌乱。
他站起身,站姿有些僵硬:我是艾伦·图灵,他小声说,视线落在埃德蒙的领带结上,国王学院的研究员。你的方法...它避免了传统多表替代密码的周期性弱点。
周期性弱点?
埃德蒙不动声色地反问。
是的。
图灵的语调突然变得流畅,仿佛进入了舒适区,传统多表替代密码的破绽在于密钥重复。但你的符文映射...他谨慎地指了指埃德蒙手中的稿纸,每个字符的位移量都不固定,这很聪明。
埃德蒙微微眯起眼睛:但如果只是随机映射,解密方如何同步?
这就是关键。
图灵从西装内袋取出一支钢笔和便签纸,在得到埃德蒙颔首后,才小心地写下几行公式:
看,假设我们用素数序列p?,p?,...,p?来代替随机数。令明文字符m?的密文c?满足:c? ≡ m? + p? (mod 26)。
埃德蒙凝视着公式,突然接话:那么解密时只需计算m? ≡ c? - p? (mod 26)。但双方如何确保使用相同的素数序列?
图灵的眼睛亮了起来,钢笔在纸上快速移动:我们可以共享一个种子数s,然后通过这个递归关系生成序列:p? = s, p??? = next_prime(a·p? + b)。
next_prime函数的计算成本呢?埃德蒙追问。
这正是难点。
图灵的声音带着学术探讨的兴奋,但如果我们改用线性同余发生器生成伪随机数,再通过这个变换...
他在便签上快速写下一串更复杂的公式,笔尖微微颤抖。
埃德蒙注意到他额角渗出的细密汗珠,显然完全沉浸在数学的世界里。
等等,埃德蒙突然打断,伪随机数会不会引入新的周期性?
图灵停下笔,认真思考了几秒:你说得对。那么我们可以考虑双向链式加密:c
