Diffie-Hellman算法簡介


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

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。

二、數學證明:

對於小明的密鑰計算過程有:
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

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

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

查了一下資料,好吧,這個如果用於實戰的話,一個”代理“就輕易的使這種加密完全無效。

所以現在用的比較廣泛的加密算法是RSA(非對稱加密算法)

參考文檔:

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

https://www.cnblogs.com/qcblog/p/9016704.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM