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
参考 : ディフィー・ヘルマン鍵共有の仕組み - 小人さんの妄想