2026-04-11 21:18:23

两周后,系统出了问题。

准确地说,是十一天。

程实离开后的第十一天,天枢v3.2在凌晨三点崩溃了。不是硬件故障,不是网络问题,是核心模块报了一个从没见过的错误。

小杨被警报叫醒的时候是凌晨三点零七分。他穿着睡衣坐到电脑前,VPN连进服务器,看到的是满屏的红色。

ERROR:KEY_VERIFICATION_FAILED.MODULE:TIANSHU_CORE.CODE:0x7F3A.

他没见过这个错误码。

他查了文档,查了日志,查了StackOverflow。什么都没有。

他试着重启模块。重启失败。报错信息变了:KEY_ROTATION_TIMEOUT。

他试了回滚到上一个版本。回滚成功——但v3.1的密钥也不匹配了。他又试了v3.0,v2.9,v2.8——全都不匹配。

他一直回滚到v1.0。v1.0的密钥也不匹配。

每一个版本。从第一行代码到最后一行。全部锁住了。

程实不是带走了某一个版本的密钥。他把整个密钥体系全部打包带走了。从第一天到现在的每一天。

小杨盯着屏幕上的报错信息,手指在键盘上敲了三分钟,一无所获。屏幕上的红色还在跳——每三秒刷新一次,每一次都是同一个错误。他已经数了,这是第47次。

他的手在发抖。睡衣的后背湿了一片。

他试了所有他能想到的办法。翻了三年份的提交记录,查了每一个和密钥相关的commit。他在凌晨四点给三个前同事打了电话,问他们有没有备份。没有。密钥从来没有备份过,因为密钥不是静态的,是动态的。而动态生成的算法——四十七万行代码里,跟加密有关的模块只有一个人碰过——程实。

每一次提交,每一次修改,每一次优化——都是同一个人。

小杨盯着那个名字看了很久。

他打电话给孙磊。

孙磊来的时候带着两个外聘的技术顾问。一个头发花白,一个戴着厚框眼镜。他们看了报错信息,翻了半天代码,最后对着屏幕面面相觑。

“这个加密……不是标准的加密协议。”顾问甲说。

“天枢的核心模块用了一套自定义的加密体系。密钥不是存在服务器上的,是动态生成的——但动态生成的算法……”

顾问甲翻了一行代码给顾问乙看。顾问乙看了一眼,眉头拧成一个结,又往上下翻了几行,然后摇头。

“这套加密不是用现成框架搭的。”顾问乙说,“是手写的。从底层开始,一层一层往上叠。而且——”他推了推眼镜,“我干了二十年安全,没见过这种写法。”

他用鼠标往下滚了几行,指着一个函数名。“你看这里——seed_generator。它调用了天枢核心数据流的实时参数作为熵源。温度、负载、数据吞吐量……全部参与密钥运算。每一次生成的密钥都是唯一的,不可复现。”

顾问甲凑过来看了一眼,倒吸一口气。“而且……密钥不是一次性的。它有一个轮换机制——每隔六小时自动轮换一次。新密钥的生成依赖上一轮的运行状态。”

“所以——”

“所以哪怕你拿到了某一次的密钥,六小时后就废了。除非你知道轮换算法的完整逻辑。”

“能不能破解?”孙磊问。

顾问乙看了顾问甲一眼。顾问甲慢慢摇了摇头。

“不是破不破解的问题。这个加密体系是跟天枢的业务逻辑嵌在一起的。你不跑天枢,就生成不了密钥。但你不输入密钥,天枢就跑不起来。”

“死循环。”

“对。”顾问甲说,“只有设计这个算法的人知道怎么打破这个循环。”

他调出了代码提交记录——三年前,天枢v1.0,核心加密模块,提交者:程实。

“重写呢?”孙磊问。

顾问甲摘下眼镜擦了擦,又戴上。“天枢核心加密模块,大概四万行代码,跟业务逻辑耦合了至少二十个接口。重写至少六个月。而且这个加密体系是一千多个日夜迭代出来的。你没法压缩时间。”

小杨低着头,手指在键盘上悬着。

他想起程实走的那天——“天枢的文档在共享盘里,注释很全。你看得懂。”

他打开共享盘,找到了天枢的文档。文档确实很全,每个模块、每个函数、每个接口都有注释。

但核心加密模块的注释不一样。

其他模块的注释是正常的中文说明——“此函数用于处理数据流分片”“调用时需传入分片ID”。但核心加密模块的注释是一串奇怪的字符。

“//等雨停了再走。”

“//不是所有的锁都需要钥匙。”

“//第372天,他开始删我的注释。”

小杨看着这些注释,后背出了一层汗。

他一条一条地翻。每一条注释都像是一句话——不是写给机器看的,是写给人看的。写给未来某个翻到这里的人看的。

写给他的。

最后一条注释写在加密算法的入口函数上:

“//小杨,如果你看到这里,说明我走了。密钥生成算法在移动硬盘里,文件名是第一天。密码是你入职那天我请你吃的牛肉面的价格。”

小杨的眼眶红了。

他记得那碗面。

他入职第一天,程实带他去楼下吃面。面馆的菜单上写着牛肉面18块,但程实说“今天你刚来,我请你”。他给了老板一张二十,老板找了两个硬币。

他拿着这两个硬币想了很多遍。

但密码不是18。

是20。

程实给了20,老板找了2块。面是18,但他付的是20。

程实记的不是面的价格,是他付的钱。

三年前入职第一天,他就用这碗面告诉小杨:记住别人给你的,不是别人欠你的。

小杨盯着屏幕上的注释,泪流满面。他没有擦,继续往下翻。屏幕上的光映在他脸上,一闪一闪。密钥生成算法打开以后,他看到了一个文件夹——“第一天”。

里面是完整的天枢v1.0源代码。

注释的第一行写着:“这是第一天。以后每一天,都从这里开始。”

小杨用20打开了文件。

三天后,天枢暂时恢复了运行——小杨用那个密码打开了程实留下的密钥算法文件。但只是一个临时方案,核心模块的升级和迭代需要完整的密钥体系,而这个体系只有程实本人才能操作。

他在走廊里站了十秒。十秒里他想了很多事——他想到了天枢系统,想到了董事会上自己的PPT,想到了程实被叫进HR办公室的时候,他在隔壁打电话的那个电话。

那个电话是打给老婆的。他说:“搞定了。”

现在他想把那三个字咽回去。咽不回去。就像他改掉的那些代码注释一样——改了表面,改不了底层的提交记录。

走廊里遇到了小杨。小杨抱着笔记本电脑,看到孙磊的脚步停了一下。

“孙总,密钥的临时方案只能撑三天。三天之后——”

“我知道了。”孙磊没有停下脚步。

他回到自己的工位,打开电脑。翻到一个网页——企业信息查询。

搜了一个名字:程实。

搜索结果里有一条:天枢科技有限公司,法定代表人:程实,成立日期:两年前。

两年前。

程实被开除之前两年,就已经注册了自己的公司。

名字叫“天枢科技”。

跟系统的名字一模一样。

孙磊盯着屏幕上的五个字,看了很久。

天枢。

他的手在鼠标上攥了一下。两年前程实注册了这家公司,那时候天枢才v2.0,刚刚拿了第一轮融资。程实就已经在准备离开了。

他往下翻。经营范围:软件开发、信息系统集成服务、数据处理和存储支持。跟他们公司一模一样。

注册地址在科技园隔壁的创业大厦。直线距离不到八百米。

他又翻到股东信息。程实持股100%。认缴资本:五十万。两年前就到位了。

孙磊靠在椅背上。两年前。那时候程实每天加班到凌晨,安安静静地写代码。他以为程实是在给天枢拼命。原来程实是在给自己拼命。

他又想起一件事。两年前公司办年会,程实提前走了,说“家里有事”。现在想来,那天是工作日。工商局的网站显示,天枢科技的注册日期就是一个工作日。

程实请了半天假,去注册了自己的公司。

然后回来继续加班。写天枢的代码。

不。不是准备离开。

是在等一个让他离开的人。

而孙磊亲手给了他这个机会。

孙磊关上电脑,靠在椅背上。办公室的灯很亮,照得他脸上的胡茬特别明显。他已经三天没回家了。桌上堆着吃了一半的外卖,筷子搁在塑料盒的边缘,油已经凝了。

他拿起桌上的专利证书——镜框的金边在灯光下反着光。上面写着三个名字:孙磊、刘海涛、程实。

他的名字在第一个。

他盯着那个名字看了很久,然后把证书翻过去,背面朝上。

他不想看到那个名字。

第3章 注释

两周后,系统出了问题。

准确地说,是十一天。

程实离开后的第十一天,天枢v3.2在凌晨三点崩溃了。不是硬件故障,不是网络问题,是核心模块报了一个从没见过的错误。

小杨被警报叫醒的时候是凌晨三点零七分。他穿着睡衣坐到电脑前,VPN连进服务器,看到的是满屏的红色。

ERROR:KEY_VERIFICATION_FAILED.MODULE:TIANSHU_CORE.CODE:0x7F3A.

他没见过这个错误码。

他查了文档,查了日志,查了StackOverflow。什么都没有。

他试着重启模块。重启失败。报错信息变了:KEY_ROTATION_TIMEOUT。

他试了回滚到上一个版本。回滚成功——但v3.1的密钥也不匹配了。他又试了v3.0,v2.9,v2.8——全都不匹配。

他一直回滚到v1.0。v1.0的密钥也不匹配。

每一个版本。从第一行代码到最后一行。全部锁住了。

程实不是带走了某一个版本的密钥。他把整个密钥体系全部打包带走了。从第一天到现在的每一天。

小杨盯着屏幕上的报错信息,手指在键盘上敲了三分钟,一无所获。屏幕上的红色还在跳——每三秒刷新一次,每一次都是同一个错误。他已经数了,这是第47次。

他的手在发抖。睡衣的后背湿了一片。

他试了所有他能想到的办法。翻了三年份的提交记录,查了每一个和密钥相关的commit。他在凌晨四点给三个前同事打了电话,问他们有没有备份。没有。密钥从来没有备份过,因为密钥不是静态的,是动态的。而动态生成的算法——四十七万行代码里,跟加密有关的模块只有一个人碰过——程实。

每一次提交,每一次修改,每一次优化——都是同一个人。

小杨盯着那个名字看了很久。

他打电话给孙磊。

孙磊来的时候带着两个外聘的技术顾问。一个头发花白,一个戴着厚框眼镜。他们看了报错信息,翻了半天代码,最后对着屏幕面面相觑。

“这个加密……不是标准的加密协议。”顾问甲说。

“天枢的核心模块用了一套自定义的加密体系。密钥不是存在服务器上的,是动态生成的——但动态生成的算法……”

顾问甲翻了一行代码给顾问乙看。顾问乙看了一眼,眉头拧成一个结,又往上下翻了几行,然后摇头。

“这套加密不是用现成框架搭的。”顾问乙说,“是手写的。从底层开始,一层一层往上叠。而且——”他推了推眼镜,“我干了二十年安全,没见过这种写法。”

他用鼠标往下滚了几行,指着一个函数名。“你看这里——seed_generator。它调用了天枢核心数据流的实时参数作为熵源。温度、负载、数据吞吐量……全部参与密钥运算。每一次生成的密钥都是唯一的,不可复现。”

顾问甲凑过来看了一眼,倒吸一口气。“而且……密钥不是一次性的。它有一个轮换机制——每隔六小时自动轮换一次。新密钥的生成依赖上一轮的运行状态。”

“所以——”

“所以哪怕你拿到了某一次的密钥,六小时后就废了。除非你知道轮换算法的完整逻辑。”

“能不能破解?”孙磊问。

顾问乙看了顾问甲一眼。顾问甲慢慢摇了摇头。

“不是破不破解的问题。这个加密体系是跟天枢的业务逻辑嵌在一起的。你不跑天枢,就生成不了密钥。但你不输入密钥,天枢就跑不起来。”

“死循环。”

“对。”顾问甲说,“只有设计这个算法的人知道怎么打破这个循环。”

他调出了代码提交记录——三年前,天枢v1.0,核心加密模块,提交者:程实。

“重写呢?”孙磊问。

顾问甲摘下眼镜擦了擦,又戴上。“天枢核心加密模块,大概四万行代码,跟业务逻辑耦合了至少二十个接口。重写至少六个月。而且这个加密体系是一千多个日夜迭代出来的。你没法压缩时间。”

小杨低着头,手指在键盘上悬着。

他想起程实走的那天——“天枢的文档在共享盘里,注释很全。你看得懂。”

他打开共享盘,找到了天枢的文档。文档确实很全,每个模块、每个函数、每个接口都有注释。

但核心加密模块的注释不一样。

其他模块的注释是正常的中文说明——“此函数用于处理数据流分片”“调用时需传入分片ID”。但核心加密模块的注释是一串奇怪的字符。

“//等雨停了再走。”

“//不是所有的锁都需要钥匙。”

“//第372天,他开始删我的注释。”

小杨看着这些注释,后背出了一层汗。

他一条一条地翻。每一条注释都像是一句话——不是写给机器看的,是写给人看的。写给未来某个翻到这里的人看的。

写给他的。

最后一条注释写在加密算法的入口函数上:

“//小杨,如果你看到这里,说明我走了。密钥生成算法在移动硬盘里,文件名是第一天。密码是你入职那天我请你吃的牛肉面的价格。”

小杨的眼眶红了。

他记得那碗面。

他入职第一天,程实带他去楼下吃面。面馆的菜单上写着牛肉面18块,但程实说“今天你刚来,我请你”。他给了老板一张二十,老板找了两个硬币。

他拿着这两个硬币想了很多遍。

但密码不是18。

是20。

程实给了20,老板找了2块。面是18,但他付的是20。

程实记的不是面的价格,是他付的钱。

三年前入职第一天,他就用这碗面告诉小杨:记住别人给你的,不是别人欠你的。

小杨盯着屏幕上的注释,泪流满面。他没有擦,继续往下翻。屏幕上的光映在他脸上,一闪一闪。密钥生成算法打开以后,他看到了一个文件夹——“第一天”。

里面是完整的天枢v1.0源代码。

注释的第一行写着:“这是第一天。以后每一天,都从这里开始。”

小杨用20打开了文件。

三天后,天枢暂时恢复了运行——小杨用那个密码打开了程实留下的密钥算法文件。但只是一个临时方案,核心模块的升级和迭代需要完整的密钥体系,而这个体系只有程实本人才能操作。

他在走廊里站了十秒。十秒里他想了很多事——他想到了天枢系统,想到了董事会上自己的PPT,想到了程实被叫进HR办公室的时候,他在隔壁打电话的那个电话。

那个电话是打给老婆的。他说:“搞定了。”

现在他想把那三个字咽回去。咽不回去。就像他改掉的那些代码注释一样——改了表面,改不了底层的提交记录。

走廊里遇到了小杨。小杨抱着笔记本电脑,看到孙磊的脚步停了一下。

“孙总,密钥的临时方案只能撑三天。三天之后——”

“我知道了。”孙磊没有停下脚步。

他回到自己的工位,打开电脑。翻到一个网页——企业信息查询。

搜了一个名字:程实。

搜索结果里有一条:天枢科技有限公司,法定代表人:程实,成立日期:两年前。

两年前。

程实被开除之前两年,就已经注册了自己的公司。

名字叫“天枢科技”。

跟系统的名字一模一样。

孙磊盯着屏幕上的五个字,看了很久。

天枢。

他的手在鼠标上攥了一下。两年前程实注册了这家公司,那时候天枢才v2.0,刚刚拿了第一轮融资。程实就已经在准备离开了。

他往下翻。经营范围:软件开发、信息系统集成服务、数据处理和存储支持。跟他们公司一模一样。

注册地址在科技园隔壁的创业大厦。直线距离不到八百米。

他又翻到股东信息。程实持股100%。认缴资本:五十万。两年前就到位了。

孙磊靠在椅背上。两年前。那时候程实每天加班到凌晨,安安静静地写代码。他以为程实是在给天枢拼命。原来程实是在给自己拼命。

他又想起一件事。两年前公司办年会,程实提前走了,说“家里有事”。现在想来,那天是工作日。工商局的网站显示,天枢科技的注册日期就是一个工作日。

程实请了半天假,去注册了自己的公司。

然后回来继续加班。写天枢的代码。

不。不是准备离开。

是在等一个让他离开的人。

而孙磊亲手给了他这个机会。

孙磊关上电脑,靠在椅背上。办公室的灯很亮,照得他脸上的胡茬特别明显。他已经三天没回家了。桌上堆着吃了一半的外卖,筷子搁在塑料盒的边缘,油已经凝了。

他拿起桌上的专利证书——镜框的金边在灯光下反着光。上面写着三个名字:孙磊、刘海涛、程实。

他的名字在第一个。

他盯着那个名字看了很久,然后把证书翻过去,背面朝上。

他不想看到那个名字。

点击获取下一章

手机版