原文 :
參考 :
*下面程式利用openssl庫,實現了dh演算法,產生金鑰以及計算sessionkey*/
#include #include int main()
/* 檢查金鑰引數 */
ret=dh_check(d1,&i);//i先被置0,然後通過或等於,得到出錯資訊型別
if(ret!=1)
/* 金鑰大小 */
size=dh_size(d1);
printf("dh key1 size : %d\n",size);
/* 生成公私鑰 */
ret=dh_generate_key(d1);
if(ret!=1)
/* p和g為公開的金鑰引數,因此可以拷貝 */
d2->p=bn_dup(d1->p);
d2->g=bn_dup(d1->g);
/* 生成公私鑰,用於測試生成共享金鑰 */
ret=dh_generate_key(d2);
if(ret!=1)
/* 檢查公鑰 */
ret=dh_check_pub_key(d1,d1->pub_key,&i);
if(ret!=1)
/* 計算共享金鑰 */
len1=dh_compute_key(sharekey1,d2->pub_key,d1);
len2=dh_compute_key(sharekey2,d1->pub_key,d2);
if(len1!=len2)
if(memcmp(sharekey1,sharekey2,len1)!=0)
printf("生成共享金鑰成功\n");
return 0;
}
DH 演算法原理
dh 演算法原理 一 背景 dh演算法全稱為diffie hellman演算法。這種方法可以在不安全的網路環境中協商金鑰。二 原理 步驟1 傳送方和接收方設定相同的大數數n和g,這兩個數不是保密的,他們可以通過非安全通道來協商這兩個素數。步驟2 傳送方選擇乙個大隨機整數x,計算 x g x mod ...
DH演算法初探
剛接觸dh演算法,寫下此部落格以記之,如有不足之處請指正 在https協議中,client端和server端需要三個引數才能生成sessionkey來加密資訊。三個引數分別是 client random 客戶端隨機數 假設是c server random 服務端隨機數 假設是s premaster ...
DH金鑰交換演算法
迪菲 赫爾曼金鑰交換 diffie hellman key exchange,簡稱 d h 是一種安全協議。它可以讓雙方在完全沒有對方任何預先資訊的條件下通過不安全通道建立起乙個金鑰。這個金鑰可以在後續的通訊中作為對稱金鑰來加密通訊內容。1 演算法描述 離散對數的概念 原根 如果a是素數p 的乙個原...