我们假设以下的计算只有乘法没有除法, 即乘法是不可逆的(这里为了简单说明, 在后面会出现真正不可逆的函数)
「第一步」
你和小王都在心里默默的选择一个只有自己知道的数字, 比如: 你选了8, 小王选了3...(别忘了我们的假设, 没有除法). 显然, 仅凭乘法是得不出的.
那么现在问题来了, 这个不可逆的算法在哪?他在哪???
正式应用
他来了, 他来了, 他来了. 这个不可逆的算法来了....例如, 如果钟的大小是12, 基数是2, 则计算公式是: 2^8%12=256%12=4.
问题, 只告诉你数字12, 2和4, 你能算出数字8么? 不能, 因为可能性太多了....将对方的 公共-私人数字 为基数, 自己的私人数字为指数, 计算并和钟大小取模, 得出最终的共享密钥
?
image-20200503205038362
OK, 至此, 密钥交换成功....对于数字的选择有个小小的限制:
钟大小的选择必须是一个素数(我也不知道为啥).
上面选取的基数2, 只能取到钟上的数字4和8. 现实中基数一般选取钟大小的本原根(我也不知道为啥叫这名).