博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个简单的密码学实例
阅读量:6377 次
发布时间:2019-06-23

本文共 802 字,大约阅读时间需要 2 分钟。

 一个简单的密码学实例

分享一个密码学实例:

假设我们的主角是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 ,如需转载请自行联系原作者

你可能感兴趣的文章
GCD之并行串行区别
查看>>
Xshell用鼠标选中一段文字后自动换行的问题
查看>>
vue-element-admin 4.0.1 发布,后台集成方案
查看>>
sql左链接、内链接、右链接、全链接
查看>>
IOS-UI基础-按钮
查看>>
删除/添加/调用WordPress用户个人资料的联系信息
查看>>
POJ 3744 Scout YYF I 矩阵快速幂
查看>>
在linux下执行依赖多个jar的类的方法
查看>>
****** 二十五 ******、软设笔记【数据库】-数据库语言-数据定义、数据查询
查看>>
day7面向对象--反射
查看>>
文件打开方式
查看>>
ERROR 2002
查看>>
NET多线程探索-NET线程基础知识点
查看>>
Oracle 11g R2 新特性
查看>>
微信小程序新手知识
查看>>
java中数据流的简单介绍
查看>>
根据物流号查看物流信息
查看>>
jsp设置MIME类型
查看>>
python模拟自动登录网站(urllib2)
查看>>
Java 对文件的操作
查看>>