密码学基础二

一、考虑下面几个数学题:
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个角色,“发送方”,“接收方”,和“窃听者”
(图片)

根据刚才提到的算法,

1.假设发送方保存了一个“私有指数2”,对一个随机数(比如5)进行幂运算,然后对另一个随机数(比如7)取余=>52 %7=4。然后将4发送给接收方,此时,接收方和窃听方都收到了4这个数,

2.假设接收方也保存了一个“私有指数3”,同样对5进行幂运算,然后对7取余=>53 %7=6。然后将6发送给接收方,此时,接收方和窃听方都收到了6这个数,

3.然后到了算法的核心地方:

发送方接收到6后,使用自己的私有指数运算:62%7=1;

接收方接收到4后,使用自己的私有指数运算:43%7=1;

由上可见,发送方和接收方最终运算结果一样,因为6是53 %7的值,4是52 %7的值,带入进去即是:

(53)2 %7=(52)3 %7
(图片)

4.这里的1就相当于“公共秘钥”,使用“1”进行通讯中的加密计算。而仅仅有底数5,整数7,以及两次取余的结果6和4,是很难推算出发送方和接收方的私有指数的(2和3),同时“7”这个整数越大,越难反推出私有指数的值,因此窃听方也无法算出公共秘钥1这个值