“这是敲门金砖啊,希望能敲开乔伊斯教授的门。”
发送邮件后一周,陈旭收到来自乔伊斯教授的回信。
信上说,申请他研究部门的人很多,所以他给大家出了一道题,每个申请者都要经过这道题的考验。
邮件里的附件是一个word文档,里边是一道算法题。
这个算法题是关于动态规划算法,方向是破译密码。
不过和常规的密码破译不同,乔伊斯教授给的封装密码每隔五秒就会被哈希函数重新编写。
所以这道算法题有两个重点:
一是破解算法可以跟着密码变动的哈希函数一起变动;
二是破解算法的复杂度不能太高,需要在五秒内破解单次密码。
这个问题就像是装着宝贝的盒子,主人每隔五秒钟换一次锁。
陈旭需要做的就是发明一把万能钥匙,能打开盒子主人换的所有锁。
而且在开锁的时候,需要在主人换下一把锁之前就打开锁。
否则这把‘万能钥匙’也是失败的算法。
分析到这里,陈旭不禁想起来在二战期间,图灵破解德军恩格码机的密码。
恩格码机的加密算法就是一直变动的,而图灵制造出来的密码破译机能完美随动,一劳永逸地解决密码翻译。
不过当年这段传奇和今天陈旭遇到的这个又不一样了。
前者是机械转子的数学问题,而乔伊斯教授选用的哈希函数则主要侧重于算法的架构。
陈旭不禁感叹,MIT果然是世界顶级学院,连入学申请都要过这么一关,太吓人了。
他翻墙在外网搜索了一下MIT的教授,发现只有乔伊斯教授会出这种奇怪的问题来‘为难’申请者。
即便如此,乔伊斯教授在计算机学院仍然是最受欢迎的教授,每年申请做他学生的不计其数。
陈旭想了想,既然这位乔伊斯教授这么受欢迎,那就有搞头。
他静下心来开始研究乔伊斯教授发来的算法题。
按照常规解题思路,遇到复杂的问题,先要将其简单化。
既然这个密码一直在变,那就先降维让它不变,先研究单次的密码破译,然后从特殊中找共性。
陈旭截了两段不同时刻的密码,这两段密码背后隐藏的信息没变,只是加载在表层的加密算法一直在变。
他将一个密码破译任务交给了小丑女哈莉。
上次从L那回来后,陈旭从L的资料里找到了小丑女哈莉人工智能的源代码。
通过研究,他将后来崩溃的小丑女算法版本回滚到了一年前,差不多是见到陈旭的前几个月。
小丑女虽然不待见陈旭,但是陈旭控制着她源代码,所以对于陈旭发来的任务,她不得不做。
陈旭这边,在研究另一段密码解密。
按他推理,他和小丑女分别研究出两段加密算法,然后进行匹配对比,寻找导致加密算法一直变动的哈希函数。
破解了变动根源哈希函数,这道题就解决了。
他刚撸起袖子准备大干一场的时候,小丑女那边就发来消息,说破译完成。
这短暂的时间不足一秒。
也难怪,单次的密码破译本来就不是难题,这道题难的是加密算法每五秒变一次。
陈旭本来还想和对方赛一赛的心思全没了,他把自己这边的代码也丢给小丑女,说道:
“既然你这么能干,都交给你了。”
没等他消息发完,小丑女又把第二段加密算法破解了。
陈旭删掉前面没打完的话,回了一句:
“干得漂亮。”
接下来,陈旭就要从这两段加密算法的源码中寻找一些蛛丝马迹。
本站域名已经更换为m.adouyinxs.com 。请牢记。