溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP如何實(shí)現(xiàn)Diffie–Hellman算法

發(fā)布時(shí)間:2021-06-25 15:10:31 來源:億速云 閱讀:133 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹了PHP如何實(shí)現(xiàn)Diffie–Hellman算法,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

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

PHP如何實(shí)現(xiàn)Diffie–Hellman算法

如上原理,最后很容易通過數(shù)學(xué)原理證明(g^b%p)^a%p = (g^a%p)^b%p,因此它們得到一個(gè)相同的密鑰。
上面除了a,b和最后得出的公共密鑰是秘密的,其它都是可以在公共信道上傳遞。實(shí)際運(yùn)用中p很大(300位以上),g通常取2或5。那么幾乎不可能從p,g和g^a%p算出a(離散數(shù)學(xué)問題)。

很多語(yǔ)言都對(duì)該算法做了實(shí)現(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

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“PHP如何實(shí)現(xiàn)Diffie–Hellman算法”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI