关于Diffie-Hellman密钥交换

Jam*_*sev 3 python encryption

我正在阅读的这本书解释了算法如下:

  • 2人认为2个公共"n和g"数字都知道.
  • 2人认为他们保密的2个私人"x和"y"号码.

交换发生如图所示

在此输入图像描述

我把以下python代码放在​​一起,看看它是如何工作的......它没有.请帮我理解我缺少的东西:

 #!/usr/bin/python

 n=22 # publicly known 
 g=42 # publicly known

 x=13 # only Alice knows this 
 y=53 # only Bob knows this

 aliceSends = (g**x)%n 
 bobComputes = aliceSends**y 
 bobSends = (g**y)%n
 aliceComputes = bobSends**x


 print "Alice sends    ", aliceSends 
 print "Bob computes   ", bobComputes 
 print "Bob sends      ", bobSends 
 print "Alice computes ", aliceComputes

 print "In theory both should have ", (g**(x*y))%n

 ---

 Alice sends     14  
 Bob computes    5556302616191343498765890791686005349041729624255239232159744 
 Bob sends       14 
 Alice computes  793714773254144 

 In theory both should have  16
Run Code Online (Sandbox Code Playgroud)

Rom*_*huk 8

你忘了两个模数:

>>> 5556302616191343498765890791686005349041729624255239232159744 % 22
16L
>>> 793714773254144 % 22
16
Run Code Online (Sandbox Code Playgroud)


小智 6

罗曼是对的。不过,你最好看看 pow() 三参数函数。更快,第三个参数是模数