薛琳侧身让乔薇进了门。乔薇进来之后没有把电脑包和硬盘放在最近的桌面上,而是走到办公桌侧面的那张空置的接待桌旁,把手提电脑包平放下来,拉开拉链,把终端从里面取出来。终端是一台银灰色的笔记本电脑,外壳的金属表面没有贴任何标识,只有A面边缘处有一道细长的划痕,从左上角延伸到中部偏右的位置,像是被什么东西从上方滑过时留下的。她把终端的电源线接上插座,把外部硬盘放在终端右侧,用一个短数据线将它们连接起来,然后在接待桌前的椅子上坐下来。 薛琳把门关上,走回自己的办公椅前坐下,两个人之间隔着一张办公桌和一张接待桌形成的距离差,视线在终端屏幕亮起之前交汇了一次。乔薇的手在键盘上操作了几下,屏幕从亮起的灰色系统界面切换到一个由文本字段和输入光标构成的命令行界面,光标在字符输入区有规律地闪烁,像是某扇门前的指示灯。 "把笔记本封皮夹层里的那串字符输入到光标所在的位置。"乔薇说,她说话的时候视线没有离开屏幕,右手悬浮在键盘上方大约两厘米的位置,拇指指腹悬在空格键的左上角上方,像一根处于待命状态但还没有被拨动的针尖。 薛琳把那本旧笔记本从桌角拿过来,翻开封面,在封皮和扉页之间的夹层里抽出那张便签纸,展开,然后走到接待桌旁边,在乔薇身侧站定,把便签纸放在桌面上靠近键盘的位置。她没有念那串字符,只是把它放在那里,让乔薇自己看。 乔薇低头看了一眼便签纸,目光在纸面上停留了大约两秒,然后她的右手开始移动。她的手指在键盘上依次按下那些字符——每两个字符之间的间隔均匀,和便签纸上的排列在时间维度上保持着完全一致的间距,像是她正在用按键的节奏还原被书写时的笔画顺序。她按完最后一个字符之后停顿了一下,拇指悬在回车键上方大约半秒,然后按下去了。 屏幕上的光标跳到了下一行,命令行界面中出现了一条新的输出字段。字段的内容是一个路径目录结构,展开后显示为三层目录——第一层是一个日期戳,第二层是一个执行号的缩写,第三层是一个由字母和数字组成的序列,序列的格式和乔薇之前描述的哈希值特征一致。光标停在了第三层目录的末端,等待下一个输入指令。 "时间线索引结构已经展开了。"乔薇说,她的声音在说出这句话的时候仍然保持着屏幕前的专注状态,视线没有离开输出字段,"第一层日期戳对应的是王建国在2017年9月3日23:47到9月4日1:08之间的那个操作窗口。第二层执行号缩写和你在权限日志里看到的Z-0717的格式一致——但是在这条路径里,执行号的尾部多了一个子字段,字符后缀是-A。" 薛琳把那张便签纸从桌面上拿起来,折好放回笔记本夹层里,把笔记本合上放在办公桌面上。她的视线从乔薇的屏幕移到她自己的桌面上那叠纸张的边缘上,然后移回来。"-A后缀对应的是那条子操作号Z-0717-A的记录。你之前查到的权限日志里显示Z-0717-A作为一个子层隐藏操作,和红笔补充在时间上的关联已经被确认了。现在这条路径里它的后缀和哈希值序列在同一层,说明它和那行红笔补充的原始文本在存储层级的结构上是并列的。" 乔薇的手指在键盘上移动了两次,输入了三个指令字符,然后按下了回车。屏幕上的输出字段向下扩展了一行,显示出了一串由文件编号和操作类型组成的列表。列表的最上方有三条记录。第一条记录的文件编号和她在铁皮柜里看到的康-档-备-017标签格式完全一致。第二条记录的文件编号由七位数字组成,其中前六位和她记忆中韩雅芝去世当天的日期格式匹配。第三条记录的文件编号和第二条在格式上相同,但七位数字中的最后两位和前一条不同,像是同一个系统框架下按照相邻时间顺序生成的连续编号。 "这三个文件编号,"薛琳说,声音在办公室的晨光中保持着和她在夜间通话中一致的节奏感,"第一条对应康-档-备-017附加说明页的归档记录。第二条对应正面圆珠笔手写补充内容所在的原始存储位置。第三条对应红笔补充原始文本的存储位置。三条记录在同一层路径下并列放置——陈忠民把这三个编号放在同一个时间线索引下,是为了让访问者在看到这三条记录时能够按照时间顺序逐一打开,从正面补充到红笔原文到铁皮柜归档页,三条之间的阅读方向是单向的,从上一行到下一行,不能逆向。" 乔薇把手指从键盘上抬起来,悬停在屏幕上方,转头看了薛琳一眼。她开口的时候声音和薛琳之间隔着大约半臂的距离,声波在两人之间的空气层中传递时没有被任何障碍物干扰或折射:"第二条和第三条文件编号对应的存储单元地址不在康怡主系统里。它们的路径指向我在昨晚通话时提到的那个以韩雅芝本名备案的外部存储单元。条目本身已经在这条时间线索引结构里显示了,但实体文件还在那个外部存储单元里。需要第二重验证才能访问那两个单元的元数据。" 薛琳从接待桌旁边退了一步,走回自己的办公桌前,把椅子转过来面朝乔薇的方向,但没有坐下。她站在那里,一只手搭在椅背的上缘,手指沿着皮革边缘的缝合线方向滑动了一小段距离。晨光从窗户的方向照进来,把她的轮廓在接待桌和办公桌之间的那段地板上投射出一道斜长的影子。"第二重验证的时间线索引哈希值——你之前说需要在现场匹配才能走完验证流程。匹配的输入项有哪些?" 乔薇把手从键盘上方放下来,搭在键盘两侧的桌面上,指尖在桌面表面摊开。她把目光从屏幕上移开,落在办公桌方向薛琳站的位置上,开口的时候声音比刚才在屏幕前低了一点,像是从专注模式切换到对话模式时音量被自然地调降了一档:"匹配需要的输入项有三样:你手上的那串字符作为基础密钥,时间线索引结构里提取到的哈希值作为第二密钥,以及原件背面那行压痕的方向特征值。第三项看起来是物理层面的参数——压痕的深度、方向、起始位置的相对偏移坐标。系统会在验证过程中对这三个输入项做叠加比对。三者都匹配的情况下,存储单元的元数据才会被释放到终端的本地缓存里。" 薛琳把搭在椅背上缘的那只手放下来,垂在身侧。她没有立刻回应,目光从乔薇的方向移开,落在窗户的方向,但没有在看窗外,而是看着窗玻璃上她和办公桌的轮廓的倒影在晨光中的成像。她站了大约四秒,然后开口了,声音的方向朝乔薇的方向,但她的视线仍然留在窗玻璃上:"原件背面的压痕方向特征值——你需要在终端的验证流程里输入什么格式?是用数值输入压痕的长度和角度,还是需要物理扫描原件本身?" 乔薇在她的椅子上调整了一下坐姿,把终端屏幕朝薛琳的方向偏转了大约二十度,让屏幕上的界面更容易被从办公桌方向看到。"验证流程有两种模式。第一种是手动输入数值——压痕的起始坐标、长度、方向和深度等级的估算值。第二种是终端自带的光学扫描模块——把原件的背面放在终端的摄像头区域进行成像,系统自动提取压痕的形态特征和位置信息,然后与存储单元里预存的验证模板做比对。两种模式都可以走完验证流程,但手动输入模式的通过率比光学扫描低了三个数量级,因为压痕深度和方向角度在手动估算时的精度不足以满足哈希值匹配的容错阈值。" 薛琳从窗玻璃上把视线收回来,走回接待桌旁边,在乔薇身侧站定。她没有坐下,而是弯腰从文件袋里把底联原件抽出来,翻到背面,在晨光和屏幕光的交汇区域中把原件放在接待桌的桌面上,朝向终端的摄像头方向。乔薇把终端的屏幕盖翻折到后方,露出一枚嵌入在屏幕盖背面的小型摄像头模组,然后把终端整体朝原件的方向平移了几厘米,让摄像头模组正对原件背面那行压痕区域的中心位置。她按下了一个键,摄像头模组侧面的辅助补光灯亮了大约两秒,然后在它熄灭的同时屏幕上显示出了一条验证进程状态的提示字段。字段的内容显示为一行短句,句子的末端没有标点,像是系统在输出时被设定为省略所有非必要符号的格式: "压痕形态比对完成 特征匹配度97.2% 阈值线95% 通过" 乔薇的手在键盘上继续操作了四次按键。屏幕上依次刷新了三条输出信息:第一条是元数据释放的确认通知,第二条是外部存储单元访问路径的展开图,第三条是两个文件编号对应的实体文件在本地缓存中的可用性状态标记。她把最后一条输出信息读了大约三秒,然后把手从键盘上拿开,指尖朝上,手势平稳地在桌面和屏幕之间悬停了半秒,然后把头朝薛琳的方向偏了一下,说了一句话,声音和之前的节奏一致,比说话时习惯的语音略短一截:"元数据已经释放。两个文件编号对应的存储单元可以被读取了。"