百科问答小站 logo
百科问答小站 font logo



Diffie-Hellman密码交换是如何运作的? 第1页

  

user avatar   guo-wu-xin 网友的相关建议: 
      

使用对称加密算法时,密钥交换是个大难题,所以Diffie和Hellman提出了著名的Diffie-Hellman密钥交换算法。

Diffie-Hellman密钥交换算法原理:


上图很经典

它的数学基础就是离散对数这个数学难题。用它进行密钥交换的过程简述如下:

选取两个大数p和g并公开,其中p是一个素数,g是p的一个模p本原单位根(primitive root module p),所谓本原单位根就是指在模p乘法运算下,g的1次方,2次方……(p-1)次方这p-1个数互不相同,并且取遍1到p-1;

对于Alice(其中的一个通信者),随机产生一个整数a,a对外保密,计算Ka = g^a mod p,将Ka发送给Bob;

对于Bob(另一个通信者),随机产生一个整数b,b对外保密,计算Kb = g^b mod p,将Kb发送给Alice;

在Alice方面,收到Bob送来的Kb后,计算出密钥为:key = Kb^a mod p = g^(b*a) mod p mod p;

对于Bob,收到Alice送来的Ka后,计算出密钥为:key = Ka ^ b mod p = g^(a*b) mod p mod p。

攻击者知道p和g,并且截获了Ka和Kb,但是当它们都是非常大的数的时候,依靠这四个数来计算a和b非常困难,这就是离散对数数学难题。

       (1)Alice与Bob确定两个大素数n和g,这两个数不用保密  (2)Alice选择另一个大随机数x,并计算A如下:A=gxmod n  (3)Alice将A发给Bob  (4)Bob  选择另一个大随机数y,并计算B如下:B=gymod n  (5)Bob将B发给Alice  (6)计算秘密密钥K1如下:K1=Bxmod n  (7)计算秘密密钥K2如下:K2=Aymod n   K1=K2,因此Alice和Bob可以用其进行加解密     



  

相关话题

  如何反驳「Powershell 比 Linux shell(bash..)好得多」这种说法? 
  如何求这个表情包里的的极限? 
  我该怎么选择电脑? 
  三进制为何比二进制更好? 
  程序员应该如何优雅地关闭电脑? 
  同时满足两个不同等差数列的数是否组成等差数列?如何证明?等比数列呢? 
  中文表达比英文简洁,中文编程能否做到比英文编程更高效? 
  为什么康德说数学是纯粹先天综合知识? 
  是否存在仅由1和2组成的长度为2^n的序列,可以做到在这个序列中取出所有含1和2的长度为n的序列? 
  这几个不等式如何证明? 

前一个讨论
有没有那种感觉,自从俄乌冲突以后,对欧美来源的信息和新闻都无法直视,无法相信了?
下一个讨论
上海母女隐瞒行程获取绿码来杭州,不规范戴口罩,坐地铁逛商场长达 7 小时,现在确诊,你怎么看?





© 2025-05-29 - tinynew.org. All Rights Reserved.
© 2025-05-29 - tinynew.org. 保留所有权利