array(5) { ["chapterid"]=> string(8) "49942585" ["articleid"]=> string(7) "7364374" ["chaptername"]=> string(8) "第15章" ["content"]=> string(22033) "贵阳·中正路·申时
客车在贵阳城外的检查站停了二十分钟。两个穿灰制服的检查员挨个问话,翻行李。刘砚把草帽往下压了压,侧着身子坐在靠窗位置,手里捏着一卷《中央日报》,报纸遮住了大半张脸。检查员走到他跟前,看了一眼他的草帽和搭在膝上的左手——手肘上的布条早就拆了,左膝的伤被裤管盖着,表面看不出异样。
"去哪?"
"贵阳。"
"干什么的?"
"做布匹生意的。看货。"
检查员用笔杆敲了敲他椅背:"证件。"
刘砚从怀里摸出那张民革特联部的证件。证件是真的,名字是真的,职务是空头的。检查员翻了翻,抬头看了看他的脸——他这几天瘦了一圈,下巴上长了胡茬,和证件照片上那个干净利落的刘砚有了些差距。
"这照片不像你。"
"照片是两年前的。瘦了。"
检查员把证件还给他,往下一个人走去。刘砚把报纸重新收起来,眼角余光扫到白静宜——她坐在过道对面,眼镜戴上了,低着头在看一本翻旧了的杂志,检查员连问都没问她。
客车启动,穿过贵阳城的南门。街面上比重庆安静些,店铺门面窄而密,行人的脚步不那么匆忙。五月的贵阳还不热,街上有人穿夹衣。
刘砚从车窗往外看,在一排铺面之间寻找某个标记。沈伯安那封信里没有写明ZYT-2的具体位置,但信封内侧那个凹陷的暗印有方向指示——他把信封重新对着光看过,"ZYT-2"下方还有一道细得几乎看不见的刻线,指向信封的折角方向。折角对应的方位是城南。
中正路。贵阳城最长的南北主街。沿街有邮局、银行、药店、几家茶馆。刘砚和白静宜在城南一片闹市下了车,混进人群里走过半条街。白静宜走到一家铺面前面放慢了步子——铺面不大,门楣上挂着块招牌:"中正印刷所",玻璃门后面摆着两排书架,上面搁着账本、文件纸、信封信笺。门口还摆了个小摊,卖报纸和杂志。
刘砚推门进去。铺子里有股油墨和纸张的气味,一个五十来岁的男人正坐在柜台后面用铜尺裁纸,听见门响抬起头来。他戴一副老花镜,镜片厚得像酒瓶底,露出来的头顶已经半秃了。
"印什么?"
"印几份名帖。"
"什么名帖?"
"鹧鸪天。"
裁纸的手顿了一下。老头从镜片上方看了刘砚一眼,又看了他身后跟进来的白静宜一眼。"十五从军征。"他说完放下铜尺,从柜台底下摸出一把钥匙,推开柜台上的一扇小门,往铺面后面努了努嘴:"后院第三间。水烧好了。"
刘砚和白静宜穿过铺面后面的窄廊,到了一个小院子里。三间平房围成一个口字,第三间在东北角,门没锁,推进去是一间干净的小屋子——一张床、一张桌子、两把椅子、墙角一个脸盆架,桌上有把铁皮茶壶,热气从壶嘴里冒出来。
白静宜坐下来,摘下眼镜揉了揉鼻梁。"我三天没好好坐下过了。宋培元把我放出来之后,我走了大半宿的山路,从重庆南岸绕到綦江方向,又搭了一辆运煤的板车到桐梓。腿已经不是自己的了。"
刘砚把门关好,走到桌前坐下。他先把腰带解下来放在桌上——夹层里的密钥纸条完好,他用指尖隔着布确认了位置。然后从内衬里抽出十二人名单、陈明远密信、沈伯安那封"别信"、技术科档案袋、铜钥匙,一字排开在桌面上。
白静宜看着桌上这些东西,目光在那张陈明远照片上停了一会儿。"你带出来的。"
"七页。用药记录、施工单、密令复本、还有这张照片。"他把照片推过去,"陈明远在夹墙里放了东西。郑华庭的档案袋也在那堵墙里。宋培元说夹墙有两层,上面是郑华庭的,下面是陈明远的。你的头发夹在档案袋里——你去过六楼。"
白静宜拿起那张照片,在光下看了一会儿。"我去过。今年三月,沈伯安出去那四天,我替他去的。他让我进技术科六楼五号房间,翻开最里面那排档案柜,在第三层柜板下面摸出了一个信封。信封里是他那几页用药记录和施工单的副本。他自己写的。"
"他为什么让你去取?"
"因为他知道那份东西早晚会被郑华庭销毁。他先把副本藏在档案柜夹层里,等他死后三周年再取出来做证据。但他今年三月回来后跟我说——我被人盯上了,东西你拿着,如果我有事,你把它交给拿着653钥匙的人。"
"结果他有事之前,你先出事了。"
白静宜把照片放回桌上。"所以他没想到郑华庭的动作比他快。他以为郑华庭的目标是他,但郑华庭的目标是我——因为我是唯一一个知道他活着的人。抓了我,沈伯安就没有对外联络的渠道了。"
刘砚把照片收回来,重新和那七页文件叠在一起。现在他手里握着的这条线索,指向同一个结论:郑华庭在清理所有知道沈伯安还活着的人。沈伯安本人的存在与否反而不是第一优先,切断他和外界的一切联系才是。
院子外面传来叩门声。三下,停顿,再两下。白静宜看了刘砚一眼,他点了下头。白静宜起身去开门,片刻后带进来一个人——林幼荷。一身灰布衣裳,头发散了几缕下来,脸上有风尘的痕迹,但眼睛清亮。
"你比我想的快。"刘砚说。
"我到了遵义就下车了。看到站台上你划的四方框,就知道你走公路了。我在遵义找了辆跑贵阳的邮车,跟邮差说我是重庆来的教员,去贵阳探亲。他让我坐在邮包里,一路颠过来的。"林幼荷从怀里摸出那五页纸,放在桌上——纸页因为一路被体温焐着,还有余温。"算法前五步。陈明远亲自写的。他自己说写到第五步就续不上了,剩下两步在他脑子里,他要想起来才能告诉我。"
刘砚接过那五页纸翻看。陈明远的字迹从第一页的工整渐渐变得松散,笔画之间的连接处开始出现断裂,到第三页就有涂改痕迹。但前五步的运算步骤写得清晰完整,每一步都标注了对应的密钥字段序号。
"密钥的第三十一位到三十四位,对应的是这个位置——"他指着第三页上的一组数字,把腰带的夹层打开,取出那张纸条铺在桌面上。三十四位字符与陈明远写的步骤逐位对应,前二十步吻合得严丝合缝。
林幼荷和白静宜同时凑过来看。三个人的影子映在纸面上,被窗外斜进来的阳光拉长。
"剩下两步,"刘砚说,"如果他不能打电话——"
院子里的电话铃响了。放在窗台上的一台黑色手摇电话机,线从窗框上方的孔里穿出去。中正印刷所的老头在铺面那边接的分机,能转接到院子里。
白静宜拿起听筒。那边说了句什么,她把听筒递给刘砚。"重庆来的。通讯大楼总机转接。"
刘砚接过听筒,贴在耳边。线路里有杂音,哗啦哗啦的电流声里夹着一个人咳嗽的声音。陈明远的声音比三天前薄了一半,像是从嗓子眼的缝隙里挤出来的。
"刘砚。"
"参谋长。"
"你拿到五页了?"
"拿到了。"
"密钥在你手上?"
"在。"
"好。我现在说第六步。只念一遍,你记。第六节点:将第五步运算结果乘以密钥第十七至十九位组成的数。积数除以三百六十五,取余。余数对应的位数,从第四组密钥开始提取。清楚吗?"
刘砚飞笔在纸上记下。"清楚。"
"第六步之后……还有一步。"电话里传来长久的沉默,电流声在空旷的线路上回荡。然后陈明远的声音重新响起来,比刚才更虚,几乎是气音:"第七步的常数……是……"
一个剧烈的咳嗽打断了后半句。咳声从听筒里传来,猛烈而破碎,像是有什么东西在喉咙深处断裂了。然后听筒那头传来什么重物落地的声音——闷响,然后是勤务兵的声音在喊"参谋长!"。电话没有挂断,线路里传来杂乱的脚步声和喊叫声,越来越远,像是听筒掉在了地上。
"参谋长!"刘砚对着听筒喊了一声。那边没有回应。脚步声、翻动物品的声音、有人在喊"快叫医生"。三分钟后,勤务兵的声音重新出现在听筒里,急促而慌乱:"刘先生?参谋长晕过去了。心跳很弱,医生已经在路上了。他刚才说了什么——您记下了吗?"
"第六步记下了。第七步只说了一个常数就——"
"他只跟您说了?"
"只说了一个词。"
勤务兵沉默了两秒。"那参谋长之前交代过,如果中途断掉的话,您先别等。他说他想起来的东西会在电话里说,如果没有说完整的,就不一定是对的。他让您判断。"
电话挂了。刘砚把听筒放回座机上,桌面上那几页纸在午后的光里泛着白色。他只拿到了第六步。"常数"两个字在脑子里转——第七步的核心是一个常数。什么常数?
白静宜坐在椅子上,看着他的表情。"他最后说常数的时候,语气是肯定的。说明他记得第七步是什么东西,只是来不及说全。"
"常数。"刘砚把陈明远那五页纸重新翻了一遍,从第一步到第五步的运算流程里,没有出现过任何常数项。整条算法的前六步都是变换和运算,到了第七步才引入一个外部数值。这个数值必须满足某种条件——它是一个自然存在的、可测量的数值,而不是凭空生成的密钥。
"活着的数字。"白静宜忽然说了这么一句,声音很低,像是自言自语。
刘砚抬头看她。"什么?"
"沈伯安跟我讲过这个算法。他说的原话是——前面六步都是死的,第七步是活的。一个活着的数字。你测不到它,就解不开。"白静宜盯着桌面上的纸页,"我当时问他,活着的数字是什么意思。他说——心脏跳一下,就是一个数字。那个数字对了,魔笛就破了。"
心脏。心率。第七步常数是心率。
刘砚把密钥纸条重新折好。心脏——谁的心脏?陈明远的心率?算法是陈明远背下来的,如果他设计第七步时以他自己的心率作为常数节点,那这个数值只有他自己知道。但陈明远现在晕过去了。医生在路上,能不能醒过来、醒过来能不能说话,都是未知。
"等一下。"林幼荷忽然开口。她走到窗边,从衣兜里摸出一张纸——皱巴巴的,像是从什么地方撕下来的。"我从陈明远书房离开的时候,顺手拿了桌上的一张纸。他写算法的时候,旁边还写了一些零散的笔记,我看不懂,但带出来了。"
她把那张纸展开,铺在桌上。纸上是陈明远的笔迹,比那五页算法更潦草,像是随手记下的备忘录。一行一行的数字和文字交织着,中间有一段被圈了起来:
"心率67。三月二十一日。午前。"
67。陈明远在三月二十一日午前记下的心率。但那是两个多月前的事了。肺癌晚期,心率会随着病情加重发生变化。如果他的心率从67变到了别的数字,那第七步常数就已经变了。
"他今天的心率多少?"刘砚问林幼荷,"你在他书房的时候,有没有注意到他的脉搏?"
林幼荷想了片刻。"他说话的时候我注意过他的颈侧——起伏快,但不算乱。不是七十以上。可能是六十几。但具体数字——"
"没法隔空测。"刘砚把那张备忘录收起来。"但常数可以有两个来源。陈明远本人说出来,这是第一个。第二个——"
"备份算法。"白静宜接上了他的话,"宋培元如果拿到了夹墙第二层里的备份,那上面写着完整的第七步。备份是陈明远三年前放进去的,当时他的心率稳定,写上去的数字就是正确的常数。"
桌面上那把653铜钥匙躺在文件旁边。白静宜把它拿起来,握在掌心。"但备份在重庆。宋培元拿到了吗?他什么时候能送出重庆?"
没有人回答这个问题。院子里的光线从午后的金黄变成了傍晚的橘红,屋里的阴影开始拉长。电话机安静地蹲在窗台上,没有再响。
刘砚把五页算法、第六步笔记、陈明远的备忘录、密钥纸条重新收好。他把腰带系回腰上时动作很慢,左手不太灵便——左膝的伤连带着整条左腿都发酸,弯腰的时候膝盖像灌了铅。
"等一等。"他说,"还有一条路。"
白静宜和林幼荷同时看向他。
"郑华庭的PX-7用药记录上写了他的心率。服药后降到五十三以下,三周了。如果备份算法被人动了手脚,宋培元拿到的数字就是错的——错的数字就是郑华庭改过的数字。他知道正确的常数是什么,但他改成了他自己的心率。用五十三解码,结果会是错的。"
"那你怎么知道正确的数字是六十七?"
刘砚把陈明远那张备忘录举起来。"陈明远今年三月二十一日的心率是六十七。但那是两个多月前。如果他这两月里心率变了——"
电话机忽然响了。
尖锐的铃声打断了屋里所有人的动作。白静宜和刘砚对视了一瞬,刘砚走过去拿起听筒。线路里传来沙沙的电流声,然后是人的呼吸声,节奏很稳,像是专门等着他接。
"刘砚。"一个沙哑的声音,不是陈明远。偏老,语速均匀,每个字的咬合都带着某种习惯了发号施令的力道。
"你是谁?"
"你不认识我的声音,但我认识你。你拿走了我放在六楼的档案袋,那张照片拍到了陈明远。你猜对了——夹墙里确实有两层。但你没猜对的是,备份算法我三年前就看过了。"对方停了一下,电话里传来翻纸的声音。"你把那五页纸拼起来,加上你记的第六步,算到最后一个数字的时候,你会发现怎么也算不出结果。因为我改了最后一个常数。改成了五十三。"
郑华庭。
刘砚握着听筒的手没有抖。"你打电话来,就是为了告诉我你改过备份?"
"我是来告诉你另一件事。白静宜在你旁边吗?"
刘砚看了白静宜一眼。白静宜走到窗台边,把耳朵凑近了听筒。
郑华庭的声音在电流声里继续说:"白老师。沈伯安今年三月去找过你。他出门那四天,去的是歌乐山。他见了陈明远。"
白静宜的手指收紧在窗台边缘。
"他和陈明远说了什么,我不知道。但他见了陈明远之后,回到重大旁边的院子,当天晚上就开始吐血。你记得吗?"
白静宜没有说话。
"他见了陈明远之后就开始吐血。PX-7的剂量是我给他开的,但那一副药——"电话那边的声音忽然压低了一丝,"是陈明远喂给他的。"
电话挂断了。断线声之后只剩下电流的空响。白静宜站在窗边没动,窗外院子里最后一线橘色的光正在从墙头上退下去。
刘砚把听筒放回座机上。桌面上那几页纸在渐暗的光线里显得有些苍白。白静宜背对着他站了几秒钟,然后转回身,脸上没什么表情。
"他说的可能对,也可能不对。"她的声音很平,"但有一条是真的——今年三月沈伯安去歌乐山见了陈明远。他回来之后,把那张我放在他枕边的药有变的纸条又拿出来了,在上面加了一行字。"
"加什么?"
"药不是我吃的。是别人端给我的。"
天色暗下来。院墙外中正路上的街灯亮了,昏黄的光透进院墙,落在屋里三个人的脚边。
刘砚在椅子上坐下来。他把陈明远写的那沓纸、第六步笔记、密钥、沈伯安的信封、那张写着"67"的备忘录——所有东西拢在一起,在面前铺成一片。
七步算法。前五步在纸上。第六步他记下了。第七步的常数,可能是六十七,可能是五十三,可能是陈明远这两个月里变过的任何一个数值。他手上没有任何一个确凿的第七步。
沈伯安被陈明远喂了药。陈明远是郑华庭的人,还是郑华庭胁迫他喂的?陈明远在电话里说"第七步是常数"的时候,是真心想帮他,还是故意引他走向五十三?
刘砚闭上眼。院子里安静极了。远处贵阳城里的晚风从围墙上方吹进来,带进来一股晚饭时分的煤烟味。林幼荷坐在床边,白静宜靠在窗台边,三个人都没有再说话。
然后刘砚睁开眼,说了一句话:"给我一支笔。"
白静宜从窗台的抽屉里摸出一截铅笔头。刘砚把那五页算法翻到最后一页,在空白处开始写。他从第一步开始推,把前五步的每一个运算拆开来重算一遍,然后代入第六步。他把密钥的三十四位写在纸上,按步骤逐位调取。
第一步。第二步。第三步。第四步。第五步。
第六步算完,得出了一个中间数——一个长串数字。纸上密密麻麻写满了两页,铅笔芯磨钝了一截。他把笔放下,看着那个中间数。
第七步需要乘一个常数。他不知道那个常数。
但他知道的是——如果第七步常数是六十七,他会得到一个结果;如果是五十三,他会得到另一个结果;如果是陈明远今天的心率,也许是六十八,也许是六十六,也许更低。
三种可能性。三种结果。只有一种结果能解开魔笛。那个结果必须符合"魔笛"本身的设计逻辑——日军密电系统第三层密钥的解码结果应该是一个有意义的、可验证的明文开头。如果他算出来的结果是一串乱码,那就是错的。
"我需要测。"他起身走到门口,站在院子里,左膝的伤让他扶了一下门框。"陈明远今天的心率。如果我能知道他今天的心率,就能确定常数。"
林幼荷走到他身后。"但他晕过去了。医生去了,也许醒了。也许没醒。"
院子外面中正路上传来汽车喇叭声,一辆黑色轿车在印刷所门口停了片刻又开走了。街灯的光穿过墙头照进来,把院里泡桐树的影子拉得又长又碎。
刘砚站在泡桐树底下,手里攥着那截铅笔头,笔芯上沾满了石墨灰。他低下头看着自己的手——执笔的那只手——然后他忽然把手抬起来搭在左腕内侧。
他的脉搏在跳。很稳。
他想起失眠的夜里他经常这样按着自己的脉数心跳。失眠的人心率不会慢。他数过,六十年前他在重庆站值夜班的时候,他的静息心率是——
七十二。
自己。他自己的心率是七十二。算法是陈明远写的,但密钥在他身上,前五步在他手里,第六步他刚刚听到了。如果他把第七步常数换成他自己的心率——七十二——会算出什么?
林幼荷看着他把铅笔头重新拿起来,在纸上飞快地开始计算。第七步乘七十二。六行算式推下来,结果是一组数字——十二位。他把这十二位数字和密钥纸条上的三十四位字符末尾十二位做比对,在纸上画出对应关系。
结果是一串排列:日文五十音图的索引排列。
"这是明文开头。"刘砚的声音不高,但手指微微收紧了纸角。"用七十二能解出来。七十二是可行的常数。"
但七十二是他的心率。陈明远不可能在三年前以刘砚的心率作为常数来设计算法——除非陈明远从一开始就知道,最后持密钥的人一定是他。
又或者算法的第七步根本不需要一个固定的"陈明远的心率"——它需要的是唯一一个到达终点的、活着的、能数自己心跳的人的心率。谁到了终点,谁的心跳就是第七步常数。任何一个人的心率都能解锁,只要这个人带着完整的密钥、前六步算法、以及——最后一步必须在他自然状态下、在他知道自己能解开的那一刻,用自己的心跳算出来。
算法就是这样被设计出来的。最后一个变量是活的、是随机的、是人本身的。它逼着最终执行者必须活着站在终点,用自己的身体完成最后一步。任何人替代不了。任何篡改数字都无效,因为常数只会在最后一刻被真正执行的人实时赋予。
刘砚把那张算完的纸举起来,对着院子里透进来的街灯光看了两秒。"我不需要陈明远的心率了。我可以用我自己的。"
白静宜从屋里走出来,站在门槛上。"你确定能解?"
"能解。七十二。我用了三遍验算,同一个结果。"他放下纸,看着院子里那棵泡桐树——叶子被晚风翻动着,银灰色的背面在灯光里一闪一闪的。"但有一个前提——我必须在心脏跳着的情况下算完。如果在运算过程中我停下来,或者我不能在同一个自然心率下保持稳定,结果就会偏。"
现在他什么都有了。密钥、前五步、第六步、第七步的实时变量——他自己的心跳。他可以解开魔笛了。就在这里,在贵阳中正路印刷所的后院里,今天晚上,在这个暮色沉沉的院子里。
刘砚把铅笔头重新削尖。他把纸铺在院中的石桌上,把密钥纸条摊开,把陈明远那五页叠在旁边,把第六步笔记折好放在手边。
然后他坐下来。夜风穿过泡桐树的叶子,街灯在院墙上投下一层昏黄的壳。左膝还在隐隐地疼,手肘上的伤口结了痂,肺里面吸进去的每口气都带着五月下旬贵阳晚间的草木气味。
他闭上了眼。数自己的心跳。
林幼荷和白静宜站在屋门前的台阶上,没有出声,也没有走近。
石桌上的灯还亮着。" ["create_time"]=> string(10) "1787340899" }