

























我简单的介绍下“DH 密钥协商算法”,想了解更多可以搜索这个关键字。
算法步骤:
步骤 1 )发送方和接收方协商一个大质数 p 和 p 的一个原根 g ;
步骤 2 )发送方秘密选择一个大随机整数 a ,计算 A = ga % p ,公开发送 A 给接收方;
步骤 3 )接收方秘密选择一个大随机整数 b ,计算 B = gb % p ,公开发送 B 给发送方;
步骤 4 )双方计算出密钥
发送方:Sa = Ba % p = (gb % p)a % p = gab % p ;
接收方:Sb = Ab % p = (ga % p)b % p = gab % p ;
可知:K = Sa = Sb ;
知道 p 、g 、A 、B 不能计算出密钥 K ,除非还至少知道 a 或 b 其中一个,a 、b 并不发送给对方,只保存在各自内存中,协商出 K 后就销毁了。
也就是,虽然开始的大质数和原根 p 、g 以及随机数 A 、B 都未加密,但是算不出 K 。
实例:
假如 p = 23 ,g = 5
发送方选取的秘密数字 a = 6 , 那么 A = 56 % 23 = 8 , 将 A 发送给接收方
接收方选取的秘密数字 b = 15 ,那么 B = 515 % 23 = 19 ,将 B 发送给发送方
发送方计算出的密钥 Sa = 196 % 23 = 2
接收方计算出的密钥 Sb = 815 % 23 = 2
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。