那么, 有什么办法能够建立共享密钥而不让小李知道呢? 现在开始, 跟着思路走一下....有这样的一种运算, 将一个数字与n取模得出最终的数, 被称为钟运算. 想象一下一个时钟, 13点就是1点. 嗯, 就是这样.
计算一个指数并将结果与钟的大小取模, 这个过程就是下面的计算了....将对方的 公共-私人数字 为基数, 自己的私人数字为指数, 计算并和钟大小取模, 得出最终的共享密钥
?
image-20200503205038362
OK, 至此, 密钥交换成功....但是, 现实使用中, 钟大小如果有几百位的数字呢?
对于数字的选择有个小小的限制:
钟大小的选择必须是一个素数(我也不知道为啥).
上面选取的基数2, 只能取到钟上的数字4和8....现实中基数一般选取钟大小的本原根(我也不知道为啥叫这名). 比如2是11的本原根.(2^1%11 ... 2^10%11 的值分别为: 2,4,8,5,10,9,7,3,6,1.