程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 迪菲-赫爾曼密鑰交換(Diffie–Hellman)算法原理和PHP實現版

迪菲-赫爾曼密鑰交換(Diffie–Hellman)算法原理和PHP實現版

編輯:關於PHP編程

       這篇文章主要介紹了迪菲-赫爾曼密鑰交換(Diffie–Hellman)算法原理和PHP實現版,需要的朋友可以參考下

      迪菲-赫爾曼(Diffie–Hellman)是一個可以讓雙方在不安全的公共信道上建立秘鑰的一種算法,雙方後期就可以利用這個秘鑰加密(如RC4)內容。

      迪菲-赫爾曼(Diffie–Hellman)算法原理很簡單:

      如上原理,最後很容易通過數學原理證明(g^b%p)^a%p = (g^a%p)^b%p,因此它們得到一個相同的密鑰。

      上面除了a,b和最後得出的公共密鑰是秘密的,其它都是可以在公共信道上傳遞。實際運用中p很大(300位以上),g通常取2或5。那麼幾乎不可能從p,g和g^a%p算出a(離散數學問題)。

      很多語言都對該算法做了實現,以PHP package中Crypt_DiffieHellman為例:

      ?

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <?php include 'DiffieHellman.php';   /* * Alice: prime = 563 * generator = 5 * private key = 9 * Bob: prime = 563 * generator = 5 * private key = 14 */   $p = 563; $g = 5; $alice = new Crypt_DiffieHellman($p, $g, 9); $alice_pubKey = $alice->generateKeys()->getPublicKey();   $bob = new Crypt_DiffieHellman($p, $g, 14); $bob_pubKey = $bob->generateKeys()->getPublicKey();   $alice_computeKey = $alice->computeSecretKey($bob_pubKey)->getSharedSecretKey(); $bob_computeKey = $bob->computeSecretKey($alice_pubKey)->getSharedSecretKey();   echo "{$alice_pubKey}-{$bob_pubKey}-{$alice_computeKey}-{$bob_computeKey}"; //78-534-117-117
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved