Diffie-Hellman算法簡介

1、DH算法是一種密鑰交換協議,它可讓雙方在不泄漏密鑰的狀況下協商出一個密鑰來。html

DH算法基於數學原理,好比小明和小紅想要協商一個密鑰,能夠這麼作:算法

1. 小明先選一個素數和一個底數,例如,素數p=23,底數g=5(底數能夠任選),再選擇一個祕密整數a=6,計算A=(g^a mod p)=8,而後大聲告訴小紅:p=23,g=5,A=82. 小紅收到小明發來的p,g,A後,也選一個祕密整數b=15,而後計算B=(g^b mod p)=19,並大聲告訴小明:B=193. 小明本身計算出s=(B^a mod p)=2,小紅也本身計算出s=(A^b mod p)=2,所以,最終協商的密鑰s爲2。

在這個過程當中,密鑰2並非小明告訴小紅的,也不是小紅告訴小明的,而是雙方協商計算出來的。加密

第三方只能知道p=23,g=5,A=8,B=19,因爲不知道雙方選的祕密整數a=6和b=15,所以沒法計算出密鑰2。spa

2、數學證實:代理

對於小明的密鑰計算過程有:
s1 = (g^b mod p)^a mod p = g^(b*a) mod p
對於小紅的密鑰計算過程有::
s2 = (g^a mod p)^b mod p = g^(a*b) mod p
根據乘法交換律,s1 == s2

3、神奇的數學,完美的加密算法?code

開始看到這個過程的時候,我着實小激動了一下,選擇合適的素數,這個密鑰的協商簡直是」無懈可擊「,怎麼應用不怎麼普遍呢?htm

查了一下資料,好吧,這個若是用於實戰的話,一個」代理「就輕易的使這種加密徹底無效。blog

因此如今用的比較普遍的加密算法是RSA(非對稱加密算法)文檔

參考文檔:get

https://www.liaoxuefeng.com/wiki/1022910821149312/1023025778520640

http://www.javashuo.com/article/p-kjqykhal-w.html

相關文章
相關標籤/搜索