1、DH算法是一種密鑰交換協議,它可讓雙方在不泄漏密鑰的狀況下協商出一個密鑰來。html
DH算法基於數學原理,好比小明和小紅想要協商一個密鑰,能夠這麼作:算法
1. 小明先選一個素數和一個底數,例如,素數p=23,底數g=5(底數能夠任選),再選擇一個祕密整數a=6,計算A=(g^a mod p)=8,而後大聲告訴小紅:p=23,g=5,A=8; 2. 小紅收到小明發來的p,g,A後,也選一個祕密整數b=15,而後計算B=(g^b mod p)=19,並大聲告訴小明:B=19; 3. 小明本身計算出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