一、考虑下面几个数学题:
1.幂数取余
32 %5=4,很简单能算出结果是4。
那么,如果3x %5=4,求X的值?这就很难推算出X的值是多少,因为X的值不是唯一的。简单统计一下3的10次幂以内:32,36,310分别对5取余,结果都是4。
2.一条运算法则
(An)m=(Am)n
交换n、m的位置,计算的结果值不变
二、根据以上原理,可以设计如下加密策略:
1.假如有如下这个简单的通讯过程,共有3个角色,“发送方”,“接收方”,和“窃听者”
0c9b667f0763e4c085f4b7b69136322.png根据刚才提到的算法,
-
假设发送方保存了一个“私有指数2”,对一个随机数(比如5)进行幂运算,然后对另一个随机数(比如7)取余=>52 %7=4。然后将4发送给接收方,此时,接收方和窃听方都收到了4这个数,
-
假设接收方也保存了一个“私有指数3”,同样对5进行幂运算,然后对7取余=>53 %7=6。然后将6发送给接收方,此时,接收方和窃听方都收到了6这个数,
-
然后到了算法的核心地方:
发送方接收到6后,使用自己的私有指数运算:62%7=1;
接收方接收到4后,使用自己的私有指数运算:43%7=1;
由上可见,发送方和接收方最终运算结果一样,因为6是53 %7的值,4是52 %7的值,带入进去即是:
(53)2 %7=(52)3 %7
- 这里的1就相当于“公共秘钥”,使用“1”进行通讯中的加密计算。而仅仅有
底数5,整数7,以及两次取余的结果6和4,是很难推算出发送方和接收方的私有指数的(2和3),同时“7”这个整数越大,越难反推出私有指数的值,因此窃听方也无法算出公共秘钥1这个值。
网友评论