改变未来的九大算法(Nine Algorithms that Changed the Future)

九大算法

直到斯坦福大学再也不能承受这一日益受欢迎的服务所需要的带宽,拉里·佩奇和谢尔盖·布林才把公司转移到了如今著名的门洛帕克车库。他们肯定做了些正确的事,因为在他们正式成立公司3个月后,美国《个人计算机杂志》(PC Magazine)就宣布谷歌是1998年美国排名前一百的网站之一。

香农的工作将汉明代码放到了一个更大的理论环境中,并为许多深入发展打下了基础。自此以后,汉明代码被用于一些最早期的计算机中,并仍广泛用于一些特定种类的内存系统中。里德—所罗门(Reed–Solomon)代码是另一类重要的代码。这些代码能被用来纠正每个代码字中的众多错误。[与这里的(7, 4)汉明代码截然不同,汉明代码只能纠正7位数代码字中的一个错误。]里德—所罗门代码基于一个名为有限域代数(finite field algebra)的数学分支,但你可以非常粗略地想象,它结合了阶梯校验和及二维定点把戏的特色。CD、DVD和计算机硬盘中都用到了里德—所罗门代码。

从第一台数字计算机的创造开始,人脑令人印象深刻的能力就吸引并启发了计算机科学家。最早使用计算机模拟人脑的讨论之一,是由英国科学家阿兰·图灵(Alan Turing) 发起的,图灵还是一名顶级的数学家、工程师和译电码专家。图灵于1950年发表的经典论文《计算机器与智能》(Computing Machinery and Intelligence),以其对计算机是否能伪装成人类的哲学探讨而闻名于世。


公钥加密中, 用户会生成一对公钥(public key)和私钥(private key). 公钥和私钥之间满足某种数学关系, 但是如果仅仅知道公钥却很难推断出私钥. 整个消息传输过程是这样的, 如果A要向B发送消息M的话

当然上面过程可以工作的假设是, B要知道这条消息是从A传输过来的. 但是有时候B并不知道某条消息是谁发送的, 那么这个时候就要求发送者首先发送公钥, 然后才能加密消息. 可是一旦如此, 如果其他人C可以截获AB之间交换的数据的话, 那么C也就可以知道A的公钥, 那么整个过程对C就完全暴露了. 这种应用场景比如https. 所以在这种场景下, 需要AB可以通过某种"加密"方式先产生共享密钥, 然后使用这个共享密钥来做加密传输. 产生共享密钥的方式可以是这样的:

数字签名使用到了公钥加密. 数字签名是要帮助接收者确定, 所收到的消息确实是来自于某个人X. 对于接收者来说最大的问题是, X的public-key到底是什么. 举个简单的例子,

数字签名实现就是将这些public-key由一些可信机构进行托管. 一些特定组织被正式指认为所谓的根认证机构。VeriSign、GlobalSign和GeoTrust等都是较为知名的根认证机构。在你有要求时,众多根认证机构的联系细节(包括互联网地址和公钥)会预装到浏览器软件中.