密码学之密匙交换
2015-12-13 19:35
225 查看
最近在学习网易公开课上可汗学院现代密码学的课程,整理了一下自己的笔记2
迪菲.赫尔曼密匙交换
迪菲.赫尔曼密匙交换利用了单向函数正向求解很简单,反向求解很复杂的特性。
(n^x) mod m=s,已知n、x、m求s简单,已知n、m、s求x很难。此时也可以求,用穷举遍历法,但是当数字很大时,耗时很长代价很大,信息的价值就不大了。
过程如下:
A:有一个公匙n、m,私匙a。例如:3、17、15
B:有一个公匙n、m,私匙b。例如:3、17、13
C:偷听者,知道公匙n、m。例如:3、17
A:计算s1=(n^a) mod m得到s1,发送s1给B。例如:(3^15) mod 17=6。
C:截获s1
B:
第一步:收到s1,计算s2=(n^b) mod m得到s2,发送s2给A。例如:(3^13) mod 17=12。
第二步:计算s=(s1^b) mod m得到公匙 s。例如:(6^13) mod 17=10。
C:截获s2,此时C只有n、m、s1、s2,很难求a、b、s。
A:收到s2,计算s=(s2^a) mod m得到公匙s。例如:(12^13) mod 17=10。
完成:此时A、B都获得的共同的密匙s。
计算原理:
s1=(n^a) mod m,s2=(n^b) mod m
s=(s1^b) mod m=((n^a) ^b) mod m
=(s2^a) mod m=((n^b) ^a) mod m
=(n^ab) mod m
迪菲.赫尔曼密匙交换
迪菲.赫尔曼密匙交换利用了单向函数正向求解很简单,反向求解很复杂的特性。
(n^x) mod m=s,已知n、x、m求s简单,已知n、m、s求x很难。此时也可以求,用穷举遍历法,但是当数字很大时,耗时很长代价很大,信息的价值就不大了。
过程如下:
A:有一个公匙n、m,私匙a。例如:3、17、15
B:有一个公匙n、m,私匙b。例如:3、17、13
C:偷听者,知道公匙n、m。例如:3、17
A:计算s1=(n^a) mod m得到s1,发送s1给B。例如:(3^15) mod 17=6。
C:截获s1
B:
第一步:收到s1,计算s2=(n^b) mod m得到s2,发送s2给A。例如:(3^13) mod 17=12。
第二步:计算s=(s1^b) mod m得到公匙 s。例如:(6^13) mod 17=10。
C:截获s2,此时C只有n、m、s1、s2,很难求a、b、s。
A:收到s2,计算s=(s2^a) mod m得到公匙s。例如:(12^13) mod 17=10。
完成:此时A、B都获得的共同的密匙s。
计算原理:
s1=(n^a) mod m,s2=(n^b) mod m
s=(s1^b) mod m=((n^a) ^b) mod m
=(s2^a) mod m=((n^b) ^a) mod m
=(n^ab) mod m
相关文章推荐
- json(转)
- 机器学习: 决策树(Decision Tree)
- iOS开发——Xcode好用的插件(16年12月更新)
- 信息安全系统设计基础第四次实验报告
- Node.js(转) -- 临时来说还看不懂!
- ContentValues(Java)
- 分位数回归的r语言代码
- 接下来要研究的几个点
- 关于指令、数据、程序和进程的一些思考
- 10012---JavaScript--保留关键字
- LeetCode 232:Implement Queue using Stacks
- GIT快速入门
- jQuery? 回归JavaScript原生API
- 分享到微信朋友圈
- 构建shell基本脚本
- gcc/g++搜索路径
- iOS -- 查看系统版本(objective-c)
- [Math]Reverse Integer
- POJ-3183
- 为什么在以哈希表为内部存储方式的结构中,重写完hashCode()后,还要重写equals()