Diffie-Hellman算法

今天在學習node.js的crypto的時候看到了DH祕鑰交換算法,於是從網上學習了下DH算法的原理,在此簡單的記錄下其實現。

數理基礎:在瞭解DH算法之前我們來了解一下其基於數論部分的基礎:(a^X mod p)^y mod p = a^(X*Y) mod p = (a^y mod p)^X mod p

DH算法在交換祕鑰時發生的運算:

前提:在客戶端和服務端約定一個素數p,一個有限域FP的生成階a

步驟:

  1. Client端選擇一個隨機c,生成需發送至服務端的公鑰 CP=a^c mod p;
  2. Server端選擇一個隨機數s,生成需發送至客戶端的公鑰SP=a^s mod p;
  3. 客戶端計算祕鑰:CR = SP^c mod p;
  4. 服務端計算祕鑰:SR = CP^s mod p;

根據之前的公式可以的出:

CR = SP^c mod p=(a^s mod p)^c mod p=a^(s*c) mod p=(a^c mod p)^s mod p =CP^s mod p=SR;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章