一个简单的密码学实例
分享一个密码学实例:
假设我们的主角是Alice和Bob,他们准备一同出去吃饭,但就去哪家餐厅并没有达成共识。此时通常的解决方法是猜拳、投硬币之类的手段来决定选择谁的方案。通常这种方式也算公平、合理,就像足球场上的掷币一样(概率是一半一半)。
但同样的事情如果环境变化了,这样的手段可能就会失灵。比如Alice通过电话或网络约Bob一同就餐,如果他们没有共同喜欢的餐厅的话,此时仍然采用猜拳亦或是投硬币的方式很显然是不合适的。因为这里面可能会出现作弊,并没有公证人可以公证真相!现代网络数据的传输有着同样让人头疼的问题。
而此时我们需要的是一种协议,这个协议可以被认为是一个游戏规则,而且如果这个游戏实在网络上或异地进行的话,我们还需要使用加密技术。
下面我们假设:
存在一个数α,由α经过一系列的运算可以很容易得出β,即β=f(α),且由β计算出α几乎是不可能的(使用超级计算机运算100年可以得出结果)
应用实现:
1.现在Alice与Bob达成共识,由Bob投币并选取一个随机的α(α为奇数表示投币结果为正面,α为偶数表示投币结果为反面)当并经过函数运算,将运算后的结果(β)告诉Alice。
2.Alice此时告诉Bob自己对正反面的猜测(即奇偶数的猜测)注:概率为50%。
3.Bob告诉Alice α的值。
4.Alice通过运算验证f(α)=β。
在现代网络的发展中这样的实例已经成为了数据安全通讯的基石。现在的加密算法很多是采用了这种不可逆函数的运算原理实现的。
密码学涉及很多方面,如:数据加密、身份验证、数据完整性等等。以上只是数据通讯协议与加密的一个小实例,还有很多细节没有提到,并需要你使少使用一种编程语言来实现她。
本文转自丁丁历险51CTO博客,原文链接:http://blog.51cto.com/manual/788710 ,如需转载请自行联系原作者