当前位置: > 外国文学名著 > 国外作家 > 林肯·奇尔德 > 深海风暴

第二十五章

  约翰·马里斯的实验室门是敞开着的,可是阿舍还是敲了敲门。
  “进来,”密码学家说。
  马里斯的实验室是研究站上最整洁的,屋子里看不到一星半点的灰尘。除了一个角落里小心翼翼叠放着的半打手册,他的办公桌上只有一个键盘和一台平板显示器终端。室内没有照片,没有海报,也没有其他任何个人纪念品。可在阿舍的眼里,这才是典型的马里斯:腼腆,内向,在个人生活和对事物的看法上几乎都深藏不露;全身心地沉浸在自己的工作中。对一个密码学家来说,这些都是理想的素质。
  遗憾的是,此时此刻,他的当前工作——这么一段简短而且似乎很简单的代码——原来却是如此难以捉摸。
  阿舍关上房门,在唯一一把来客坐的椅子里坐了下来。“我收到了你的信,”他说,“暴力破解有希望吗?”
  马里斯摇了摇头。
  “随机字节过滤呢?”
  “意思无法理解。”
  “我明白了。”阿舍灰心地陷进了椅子里。在他收到马里斯要他尽早过来一下的邮件时,他心里一阵激动,以为他已经破解出了那段代码。“尽早”这个词从安之若素的马里斯那里发出来,实际上是大声请求马上商量事情。“那么,它是个啥?”
  马里斯看了他一眼,又把目光转了开去,“我不知道我们是不是,也许,正从一个错误的角度去破解这些代码。”
  阿舍皱起了眉头,“什么意思?”
  “是这样。昨天晚上我正在读一本有关阿兰·图灵生平的书。”
  阿舍对此一点也不感到惊奇。作为一名追求完美的学者,马里斯正在致力于第二个博士学位:计算史上的重要时刻——阿兰·图灵是早期计算机理论的开创者,“说下去。”
  “嗯……你知道图灵机吗?”
  “你帮我重温一下吧。”
  “1930年代,阿兰·图灵提出了一个理论上的计算机设想,这就是著名的图灵机。它由一条其长度可以无限延伸的‘带子’所组成。‘带子’上有一些用有限字母系统书写的符号。一个基于某种查询表的‘读取头’从‘带子’上走过,读出‘带子’上的符号并释出其含义。根据读取的不同符号,‘读取头’的状态能够变化。‘带子’上储存的既可以是数据,也可以是‘转换方法’,也就是他意谓的一些小程序。在今天的计算机中,‘带子’就是存储器,而‘读取头’就是微处理器。图灵声称这种理论上的计算机可以解决任何计算问题。”
  “说下去,”阿舍说。
  “我开始思考我们试图破解的这段代码。”马里斯用手指着计算机屏幕,上面显示的那个“守护神”发射的光脉冲信号,几乎像是在以它的简短和暧昧嘲弄着他们:
  0000011111001010110101011001110111000101
  0110001100010100011010011000010000000000
  “我在想:如果这是一条图灵‘带子’呢?”马里斯继续说道,“如果我们让这些0和1从一台图灵机上通过,它们又会怎么样呢?”
  慢慢地,阿舍坐着的身子朝前倾了过来。“你是说这80位代码……是一段计算机程序?”
  “我知道这听起来有点疯狂,先生——”
  还有什么疯狂能比得上我们身处这里这一事实本身呢,阿舍心想。“请接着说。”
  “好吧。首先,我必须把这些0和1字符串分解成一个个单独的命令。我假定开头的5个0和5个1,是用来表示每条指令长度的占位符——也即由数字组成的每一个‘词’的长度是5位。于是我们就得到了14条5位长的指令。”马里斯敲了一个键,屏幕上长长的数字串消失了,取而代之的是按顺序排列的一行行数字:
  00101
  01101
  01011
  00111
  01110
  00101
  01100
  01100
  01010
  00110
  10011
  00001
  00000
  00000
  阿舍注视着屏幕,“作为一个计算机程序它真是太短了。”
  “是的。显然,它应该是一个非常简单的计算机程序。而机器语言就是数字语言的最基本也最普遍的形式。”
  阿舍点点头,“然后呢?”
  “等今天早晨我到了办公室,我就写了一个小程序,把这些数值跟标准的机器语言指令序列进行比较。这个小程序把所有可能的指令一个个地分派到这些数值上,再检查是否能从中得出一个可以运行的计算机程序。”
  “是什么使你觉得这些信息——不管这信息是什么人发给我们的,它使用的也是跟我们一样的机器语言指令?”
  “基于二进制,先生,对任何可以想象到的计算装置,存在某种不可再缩小的通用数字指令集:加,减,转移,若为0则跳过,还有布尔逻辑。所以我让这个小程序运行,并继续做我的其他工作。”
  阿舍点点头。
  “大约20分钟以前,这个小程序运行结束了。”
  “这14行二进制数字被转译出任何可行的计算机程序了吗?”
  “是的。得到了一个。”
  阿舍觉得自己的兴致突然飙升起来。“真的?”
  “是一个简单的数学表达式程序。就是这个。”马里斯敲了另一个键,一系列指令出现在了他的显示器屏幕上。
  阿舍急切地弓腰凑了上去。
  指令/助记符注释
  00101ADD/将地址13(10进制数)的内容取出放入累加器中
  0110101101/建立起一个标志
  01011CNM/将标志值取反
  00111PLC/把结果值放入地址14
  0111001110/
  00101ADD/对地址12的内容作减法运算
  0110001100/
  01100ISZ/将标志值加1,如果值为0则转移
  01010JMP/返回到第6步重复执行
  0011000110/
  10011END/程序结束
  00001/地址12
  00000/地址13
  00000/地址14
  “这程序是干什么的?”阿舍问。
  “你会注意到它的代码在一个循环中做了一系列的重复减法运算。在机器语言里,这种方式就是在做除法:通过重复做减法来实现。哦,这只是一种方法——你也可以通过做算术右移来实现——但那样一来你就得需要一套更专业化的计算系统。”
  “这么说它就是一条除法语句?”
  马里斯点点头。
  阿舍感到自己在惊讶和困惑之中还夹杂着突如其来的极度兴奋,“别吞吞吐吐的了,老弟。他们除的是个什么数字?”
  “1。”
  “1。那它又被什么数字来除?”
  马里斯舔了舔嘴唇,“哦,你瞧,问题就在这里,先生……”
轩宇阅读微信二维码

微信扫码关注
随时手机看书