Diffie Hallman(發明于1976年,獲得2016年圖靈獎):
該算法普遍存在于公共領域,幾乎所有在公開網絡中的密鑰交換都使用了這個方法,這個方法奠定了公開密鑰密碼編碼學。
原理是:A與B希望建立一個私有密鑰。很多人可能還不知道密鑰是什麼,其實密鑰就是将明文轉換為密文或者密文轉化為明文的一種規則,分為兩種,一種是對稱密鑰,一種是非對稱密鑰。對稱與非對稱的最大差別是是否用同一種規則進行封裝或解封。
現在A産生一個私有的密鑰XA(他想要發送的),并計算出公開密鑰YA(迷惑人的)發送給B,B再将其解封,得到裡面的秘密密鑰K。同理,B同樣産生一個私有密鑰XB,用同一種規則(公式)計算出公開密鑰YB發送給A,A解封得到同樣的K(前後的K必定相等,證明略)。最終才能确定一個秘密密鑰,就是K。
計算如圖:
如圖所示,XA、XB就是他們想傳達的東西,p是素數,a是整數,也就是如果别人想要擷取資訊,必須解離散對數,這是個非常複雜的過程。
缺陷:如果攻擊者攔截了這個公鑰,并僞裝成A,發送了同樣的資訊給B,那該怎麼辦?
PS:需要注明的是,DH并不能用來加密解密,它隻能用來交換和确認密鑰。