這個機制的巧妙在於它可以讓雙方在完全沒有對方任何預先資訊的條件下通過不安全通道確定對稱金鑰。
安全性在於對於大素數p,計算離散對數是十分困難的
輸入乙個素數和它的乙個原始根,生成小於此素數的乙個隨機數,計算出使用者的公鑰,儲存
然後再輸入對方的公鑰,計算出雙方的會話金鑰。
import random
import time
#雙方都知道p,g,各方還知道乙個隨機數,收到對方的運算結果
#雙方都要呼叫一次dhalgorith,在得到對方密文後都要呼叫一次dhsessionkey
#p是輸入的素數,g是輸入的p的乙個原根
defdhalgorithm
(p,g)
:#生成隨機數a
random.seed(time.time())
a = random.randint(
1,p-2)
#生成使用者一公鑰
x =1for i in
range
(a):
x = x * g
x = x % p
#返回使用者一公鑰
return
(a,x)
#y為使用者二的公鑰,p為輸入的素數,a為當前使用者的隨機數
defdhsessionkey
(y,p,a)
: k =
1for i in
range
(a):
k = k * y
k = k % p
#會話金鑰k
return k
DH金鑰交換演算法
迪菲 赫爾曼金鑰交換 diffie hellman key exchange,簡稱 d h 是一種安全協議。它可以讓雙方在完全沒有對方任何預先資訊的條件下通過不安全通道建立起乙個金鑰。這個金鑰可以在後續的通訊中作為對稱金鑰來加密通訊內容。1 演算法描述 離散對數的概念 原根 如果a是素數p 的乙個原...
DH金鑰交換演算法
迪菲 赫爾曼金鑰交換 diffie hellman key exchange,簡稱 d h 是一種安全協議。它可以讓雙方在完全沒有對方任何預先資訊的條件下通過不安全通道建立起乙個金鑰。這個金鑰可以在後續的通訊中作為對稱金鑰來加密通訊內容。1 演算法描述 離散對數的概念 原根 如果a是素數p的乙個原根...
DH金鑰交換演算法
迪菲 赫爾曼金鑰交換 diffie hellman key exchange,簡稱 d h 是一種安全協議。它可以讓雙方在完全沒有對方任何預先資訊的條件下通過不安全通道建立起乙個金鑰。這個金鑰可以在後續的通訊中作為對稱金鑰來加密通訊內容。1 演算法描述 離散對數的概念 原根 如果a是素數p的乙個原根...