20年未解的MIT密码难题,被自学成才的程序员破解了,比预计早15年
栗子 发自 凹非寺
量子位 报道 | 公众号 QbitAI
诞生在1999年的MIT密码难题,被一个自学成才的程序员破解了。
当年,出题人按照摩尔定律估计,完成计算要35年。
结局的到来,足足提前了15年。
而交卷的人类只用了i7电脑的一个CPU核。
这个密码,还将解锁一个20年前的秘密。
怎样的一个谜?
回到1999年4月,MIT计算机科学实验室 (LCS) 就要满35岁了。
它收到了一份富有仪式感的生日礼物,是个时间囊 (Time Capsule) :有人把重要的东西藏在里面,设定一个时间,留给未来的人类打开。
与众不同的是,这个时间囊有一个“密码锁”,是由密码学家Ron Rivest设计的。著名的RSA加密算法便是以他的名字命名。
Rivest设了一个平方密码,初始值是2。2^2=4,4^2=16,16^2=256……
平方之后还要取模 (mod) ,就是余数。如16 ≡ 1 mod 3, 16除以3余1。
当然,这里不是模三,是模一个很大的数:
△ 这是两个大质数的乘积,RSA算法的根基
那么,平方运算要做多少次?
80万亿次。
就像开头提到的那样,用摩尔定律推算,破解这个密码大概需要35年。这正是实验室当时的年纪。
那如果一直没有人解出答案,或者大家干脆已经忘记了这一道谜题呢?
设计者就把35年定为最终期限。即便人类没有交出答卷,时间囊依然会在2033年、实验室70周年的庆典上开启。
当然,1999年的科学家们不会想到,四年之后LCS实验室就和AI实验室合体进化,成为了后来大名鼎鼎的CSAIL。
他们大概也不会想到,20年后会有人提前交卷。
并且,第一个交卷的程序员,只用了三年半来解题而已。
三年半破解谜题
2015年,谜题发射的16年后,自学成才的比利时程序员Bernard Fabrot (简称“博纳”) 和它偶遇了。
谜题代码是用Java写的,但博纳认为用GNU多精度运算库 (GMP) 的话,解起来会更快。
这个开源库是用C语言写成的,也为Python、R、C++、PHP等各种语言做了包装。
博纳把家里台式机的其中一个CPU核,变成了解题专用,7天24小时不停地跑。除非家里停电,或者要出远门。
除了最亲密的朋友之外,博纳不敢把自己的秘密行动告诉任何人。
“我知道我是有机会赢的,可如果告诉了别人,他们用上更强的设备就可能超过我了。”
三年有余,博纳完成了那80万亿次平方运算。
最后一步,是用平方运算得到的结果、和题中给出的一个数,按题目要求做运算;算出的一串数字,可以翻译成一句祝贺。
博纳收到了温暖的贺词,便鸡冻地向MIT宣布自己解开了谜题。
像前文说起的那样,20年了,计算机科学实验室不复存在,与AI实验室合体而成的CSAIL实验室也已赫赫有名。
而CSAIL负责人Daniela Rus听到这个消息的时候,甚至不知道题目的存在。不过,稍微回溯一下历史,双方便对上了暗号。
博纳现在还不能透露这句话是什么。一切等到5月15日,答案会和时间囊一同昭告天下。
他会带着荣光参加这场仪式。
事实也证明,不让太多人知道自己的想法,是非常机智的:
对手也快完成了
虽然,CSAIL负责人并不记得当年的故事,但企图解开这个谜团的,并不止博纳一人。
还有一个根正苗红的项目组,名叫Cryptophage,由前英特尔工程师Simon Peffers带领,只为破解MIT密码而生。
他们用的方法和博纳不一样。那是一个新的平方算法,跑在可编程的加速器FPGA上,大约比CPU快10倍。
团队说只需要两个月,预计5月11日就能跑出答案了。
结局总是出人意料。团队满怀欣喜地联系MIT,预告即将诞生的成果,却被告知已有人捷足先登。
虽败犹荣,他们依然受到了邀请,参加5月15日时间囊开启的盛会。
One More Thing
在打开之前,除了设计师没有人知道,时间囊里究竟藏了多少秘密。
但现在已经有些剧透了。有的礼物来自比尔·盖茨,有的礼物来自万维网的发明者Tim Berners-Lee。
而大赢家博纳最期待的,还是世界上最早的PC游戏:Zork (魔域) 的原始版本。
谜题本题:
http://people.csail.mit.edu/rivest/lcs35-puzzle-description.txt
— 完 —
小程序|get更多AI资讯与资源
加入社群
量子位AI社群开始招募啦,量子位社群分:AI讨论群、AI+行业群、AI技术群;
欢迎对AI感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字“微信群”,获取入群方式。(技术群与AI+行业群需经过审核,审核较严,敬请谅解)
量子位 QbitAI · 头条号签约作者
վ'ᴗ' ի 追踪AI技术和产品新动态
喜欢就点「在看」吧 !
20年未解的MIT密码难题,被自学成才的程序员破解了,比预计早15年相关推荐
- java自学成才的大牛_自学成才的程序员,3年打破麻省理工难题,原本解决需35年!...
神一般的男人 二十年前,麻省理工学院的研究人员发现了一个难题,该难题可能需要35年才能解决. 但是来自比利时的自学成才的程序员伯纳德·法伯特(Bernard Fabrot)设法摆脱了以前似乎不可能的事 ...
- SourceForge访问方法,解被封痛苦之中国伟大的程序员们!
SourceForge访问方法,解被封痛苦之中国伟大的程序员们! 通过http://www.hidemyass.com/ 代理可以访问http://sourceforge.net/ hidem ...
- 程序员年薪30万,偷车厘子解压被抓,网友:丢程序员的脸;蚂蚁集团专利数全球第一;华为开发者大会下月召开;Pulsar 2.7.1...
点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 It doesn't matter how slow you ar ...
- 20 年坚守,不忘初心!一封来自程序员的感谢信!
前日遇到CSDN创始人蒋涛老师和主编孟老师,在会议中与孟老师回忆 CSDN 的点滴. 时光如梭,1998.1999年是软件互联网化的启蒙年,1998年 ISDN 等通讯技术的发展让企业和家庭开始进入互 ...
- 程序员 破解获取已连接过的WiFi密码
1.第一步:输入cmd,点击确定 2.第二步:输入命令(查看WiFi名字)netsh wlan show profiles 注(用户配置文件就是附近的WiFi名字) 3.第三步:输入命令netsh w ...
- 20年无人能破的RSA算法发明人出的密码学难题, 竟被这个无名程序员3年破解!...
来源 | WIRED 编译 | Guoxi 责编 | Aholiab 出品 | 区块链大本营(blockchain_camp) 1994 年 4 月,作为麻省理工学院计算机科学实验室成立 35 周年的 ...
- 程序员之网络安全系列(六):动态密码
系列目录 程序员之网络安全系列(一):为什么要关注网络安全? 程序员之网络安全系列(二):如何安全保存用户密码及哈希算法 程序员之网络安全系列(三):数据加密之对称加密算法 程序员之网络安全系列(四) ...
- 程序员难逃二八法则,如何晋升为头部20%玩家?
意大利经济学家帕累托根据大量调查发现:20%的人占有80%的社会财富.推及至程序员界,20%的头部程序员可能做出了80%的贡献. 在软件开发领域,二八定律同样适用.头部20%的研发人员或许就是许多人眼 ...
- Java程序员最常用的20%技术总结
我听说编程语言,经常使用的是其中20%的技术.在Java这门语言中,这20%包括哪些内容?想找到一份Java初级程序员的工作,有哪些是必须掌握的,有哪些是可以现学现卖的?一个完整的Javaweb项目, ...
最新文章
- 6421B Lab3 DNS的配置与故障排除
- VMware大会宋家瑜言虚拟化2015年方至巅峰
- 脑与认知科学3 脑神经影像下
- 如何让在JAVA中定义常量池
- 你方唱罢我登场,“全宇宙仅此一回”的小米手机青春版竞争策略分析
- [luogu3676]小清新数据结构题
- 【Luogu3931】SAC E#1 - 一道难题 Tree
- 人生没有对与错,只是选择不同
- 第十课 これは古い庭園です。
- 随想录(嵌入式应用的三个领域)
- full join 和full outer join_28.MySQL中的左(右)外连接 LEFT(RIGHT) [OUTER] JOIN
- 2018 蓝桥杯省赛 B 组模拟赛(五)题 F题
- C#参考:Linq 概述
- python如何对excel排序_Python操作Excel之分组排序
- Docker网络基础---Docker跨主机容器访问通信
- 113.库存明细账案例(包含结存数)
- swiper滑动切换变换样式,实时显示当前索引
- -128的补码及原码、反码、补码
- 小程序真机预览图片不显示
- 【云贝学院】腾讯云TDSQL-数据库字符集
热门文章
- 移动开发者如何更好地学习 React Native? | 技术头条
- 花 30 万招聘的高级程序员,真的值吗?
- 程序员,Linux 下如何避免从删库到跑路的悲剧?
- 什么情况下不应该使用深度学习?
- 程序员如何淡定度过 2.14 情人节?
- html span离div块有边距,html块 div span
- html中怎么远程控制小车,利用ESP8266远程控制小车 求大佬帮忙加段程序
- 光栅衍射主极大个数_基于达曼光栅的双目视觉系统
- linux重启mysql一直_linux正确重启MySQL的方法
- java基础类的继承_JAVA核心技术I---JAVA基础知识(类的继承)