Diffile-Hellman 鍵共有プロトコルのサンプルプログラム

理解するためにpythonでサンプルプログラムを書いてみた

# coding=utf-8

# 共有する公開値
x = 9999991  # 大きな素数
y = 42  # 整数

# Aliceの秘密値
p = 13 
# Bobの秘密値
q = 53

# Aliceは以下の値を公開する
aliceSends = (y ** p) % x 
# Bobは以下の値を公開する
bobSends = (y ** q) % x 

# AliceはBobの公開値を計算する
aliceComputes = (bobSends ** p) % x
# BobはAliceの公開値を計算する
bobComputes = (aliceSends ** q) % x

print "Aliceの公開値    ", aliceSends
print "Bobの公開値      ", bobSends
print "Aliceが計算して得た値 ", aliceComputes
print "Bobが計算して得た値  ", bobComputes

print "AliceとBobが共有した値 ", (y ** (p * q)) % x


出力

Aliceの公開値     8224959
Bobの公開値       578424
Aliceが計算して得た値  2470081
Bobが計算して得た値   2470081
AliceとBobが共有した値  2470081


参考 : python - On Diffie-Hellman key exchange - Stack Overflow
参考 : ディフィー・ヘルマン鍵共有の仕組み - 小人さんの妄想