PHP實現迪菲赫爾曼金鑰交換(Diffie–Hellman)演算法

來源:互聯網
上載者:User
PHP如何?迪菲赫爾曼金鑰交換(Diffie–Hellman)演算法?本文主要介紹了迪菲-赫爾曼金鑰交換(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為例:

<?phpinclude '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

相關推薦:

php 演算法之分割數組,不用array_chunk()_PHP教程

php 演算法之如何列印出

PHP 解決session死結的方法_PHP教程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.