《模仿游戏》观后感

《模仿游戏》观后感
模仿游戏这部电影我在高中就略有耳闻了,只是一直没机会看。在看了《源程序》、《黑客帝国》系列这一些经典的与计算机领域相关的电影后,已经有一段时间没看过这种电影了。在今早考完的“计网+os+db”的大杂烩摸底考试后,决定看一部电影来放松一下。然而,心底里还是想抓紧时间学习的(我真是一个勤奋的乖宝宝),所以就选择了这部与计算机相关的《模仿游戏》。首先看到男主感觉有几分面善,原来就是神探Sherlock里面的男主呀(虽然我也没有看过),不过他确实和Turing有几分相似,我们来瞻仰一下Turing的照片:
《模仿游戏》观后感
眉宇间确实有几分相似呢。
好了,废话不多说,进入正题。
《模仿游戏》可以说是一部关于图灵一生的纪录片吧。电影中,三条线并行:小时候的图灵、战争时期的图灵和临终前的图灵。小时候的图灵展现了很高的数学天赋,并很早就接触了密码学。但是可能就是由于他过于天资聪颖,与常人不一样,所以他往往不太入群。但班里有一个男生却和他有着共同语言,他可能就有点crush on这个男生,但最后这个男生死了,他也很伤心。
在战争时期的Turing是整部电影的highlight,彼时是纳粹德国在攻打英国占领欧洲的时期,如果英国可以破解从纳粹发来的加密电报,这就给战争的胜利带来一丝希望。然而,当时纳粹使用的加密报文可能需要人工尝试万亿次才有可能遍历完,当时的人根本不可能在短时间内破译报文。更严重的是,德国每天都会更换密码种子,这使得前一天破译遍历的工作全部白费,也就是说如果一天没有破译出来,第二天就要重头来过。
Turing在一开始就表现出新颖的想法,他并没有像其他密码学家一样考虑人工暴力破解,他的愿景就是制造出一个机器让它来帮助我们完成遍历。起初,大家都觉得这是天方夜谭,没有人愿意和他合作。但是在他的坚持下,他的同事也意识到可能真的只有机器才能完成这种任务。
不久后,机器被制造出来了。但是面临着一个问题,就是遍历的范围过大,而且随机种子每天都在变化,因此机器在一段时间内并没有取得成果,Turing也受到了负责人的质疑,但这时他的同事却站在了他一边,为他争取了更多的实验时间。后来有一天晚上,他们一群同事在酒吧里吹水,Turing偶然间听到一个女电报员说她每次记录电报时都发现开头是一段固定的字符cilly,Turing如获至宝,立马带领着团队返回实验室使用固定的密钥前缀进行遍历。果不其然,在缩短密钥可能范围后,在很短时间就把密钥破译出来。再之后,Turing通过在加密机中输入密钥以及加密的字符串通过decode的方式就得到了正确的明文。
然而,这后面紧接着发生了令我动容的一幕。Turing团队通过decode密文得知纳粹的五艘军舰将会袭击英国的一艘军舰,团队的其他人想立马知会部队进行反歼灭。然而,Turing制止了这一行为,因为他认为这会使得纳粹意识到他们的密码被破解了,从而更换毫无规律的密钥使得decode不再成功。恰巧的是,团队中有个小伙的大哥就在这艘英国军舰上执行任务,他也感到很痛苦,我也看得很揪心。
战争结束后,他们的图灵机行动仍在机密文件中保持了50年。后来,图灵因homose判刑*注入激素,最后自杀于带有氰化物的苹果中,令人唏嘘不已。
很久没有看过这种人物传记式的电影了,每次看完电影总想写一些东西记录下来,但是往往要么是懒得写要么就是忘了写,这里我来谈几点感触吧。

1.兴趣的培养
Turing之所以能够造出伟大的Turing Machine,且公认为“CS之父”很大一部分原因是他真的对这种模拟人思考的想法很感兴趣。作为SE的学生,我真的在出于兴趣学习CS知识吗?可以这样说,在没有考试驱动、没有任务驱动、没有研究进度驱动、没有毕业要求驱动、没有工作技能积累驱动的情况下,我会真的出于Curiosity去探究这些技术。然而,在各种任务驱动的支配下,很多东西都变了味道。我可能会遇到很多问题,我可能也可以找到很多解决方案,但我好像不太care他是如何解决了,即使我也弄明白他是怎么解决的。你们懂我意思吗,就是说我更多是结果导向的,利益最大化导向的。
作为SE工程师,谁会花时间去研究sha256、MD5、椭圆曲线加密、RSA的底层实现,能用就行,效率制胜!只问how不问why,我们就是这么帅!我们需要学习很多语言,java、python、go、c++,我们或许可以实现特定的功能,与os网络db进行交互,但我们真的清楚每种语言的优劣吗?我们一般只会看到网上说c++快,java慢,java生态好,这些人尽皆知的通识,但真的是这样吗?
我以为,只知道how是不够的,一定要刨根问底地揪出why。导师也说让我们自己找找兴趣点和关注论坛。除了现在主要的研读智能合约漏洞检测的论文外,我觉得自己可能对密码学还是有一定兴趣的。毕竟有一定的数学基础,谁不想对每个a找出一个b,s.t. sha256(a) = sha256(b)呢?
因此,我认为在接下来一段时间里,除了要补上SE工程师必备的java软硬技能(知道how以外),我应该深入地学习底层的密码学和共识算法(弄清楚why),毕竟共识算法源码分析也是区块链期末作业的一部分呢。但不知道sha256、RSA、MD5等密码学的源码探究什么时候才可以开始。但我坚信,一定会开始的,作为一种兴趣来尝试破解一下(though it’s hard to solve)

2.学累了一定要休息一下
看人家Turing,在酒吧就想到给for循环加个限制条件直接就搞定了呀。

3.保持对cs的热爱
cs给我们带来了多大的方便,我们要心怀感恩,乐于学习一切新的技术!同时弄清它的需求是啥!

上一篇:LL1语法生成器-编译原理-合工大


下一篇:三种主流的WebService实现方案(REST/SOAP/XML-RPC)简述及比较