迪菲-赫爾曼密鑰交換(Diffie–Hellman)算法原理和PHP實現(xiàn)版
迪菲-赫爾曼(Diffie–Hellman)是一個可以讓雙方在不安全的公共信道上建立秘鑰的一種算法,雙方后期就可以利用這個秘鑰加密(如RC4)內(nèi)容。
迪菲-赫爾曼(Diffie–Hellman)算法原理很簡單:

如上原理,最后很容易通過數(shù)學(xué)原理證明(g^b%p)^a%p = (g^a%p)^b%p,因此它們得到一個相同的密鑰。
上面除了a,b和最后得出的公共密鑰是秘密的,其它都是可以在公共信道上傳遞。實際運用中p很大(300位以上),g通常取2或5。那么幾乎不可能從p,g和g^a%p算出a(離散數(shù)學(xué)問題)。
很多語言都對該算法做了實現(xiàn),以PHP package中Crypt_DiffieHellman為例:
<?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
相關(guān)文章
ThinkPHP連接數(shù)據(jù)庫操作示例【基于DSN方式和數(shù)組傳參的方式】
這篇文章主要介紹了ThinkPHP連接數(shù)據(jù)庫操作,結(jié)合實例形式分析了thinkPHP基于DSN方式和數(shù)組傳參的方式進行數(shù)據(jù)庫連接的實現(xiàn)步驟與屬性設(shè)置、控制器、模板使用等相關(guān)操作技巧,需要的朋友可以參考下2018-03-03
PHP substr()函數(shù)參數(shù)解釋及用法講解
substr() 函數(shù)返回字符串的一部分。這篇文章給大家介紹了PHP substr()函數(shù)參數(shù)解釋及用法講解,需要的朋友參考下2017-11-11
PHP 二維關(guān)聯(lián)數(shù)組根據(jù)其中一個字段排序(推薦)
這篇文章主要介紹了PHP 二維關(guān)聯(lián)數(shù)組根據(jù)其中一個字段排序的實例代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-04-04
ThinkPHP進程計數(shù)類Process用法實例詳解
這篇文章主要介紹了ThinkPHP進程計數(shù)類Process用法,以實例形式較為詳細的分析了Process類的定義及進程計數(shù)的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-09-09
PHP開發(fā)框架kohana3 自定義路由設(shè)置示例
這篇文章主要介紹了PHP開發(fā)框架kohana3 自定義路由設(shè)置示例,kohana是一個純PHP5的開發(fā)框架,需要的朋友可以參考下2014-07-07
PHP轉(zhuǎn)換Excel中日期和時間類型的處理問題
在實際應(yīng)用中PHP讀取的Excel文件的日期無法直接使用,會出現(xiàn)的一系列問題,本文給大家介紹PHP轉(zhuǎn)換Excel中日期和時間類型的處理問題,感興趣的朋友一起看看吧2023-10-10
laravel高級的Join語法詳解以及使用Join多個條件
今天小編就為大家分享一篇laravel高級的Join語法詳解以及使用Join多個條件,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10
php中單個數(shù)據(jù)庫字段多列顯示(單字段分頁、橫向輸出)
這篇文章主要介紹了php中單個數(shù)據(jù)庫字段多列顯示、分行分列顯示技巧,也可稱為單字段分頁、橫向輸出,需要的朋友可以參考下2014-07-07

