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

*文
發布: 2023-03-18 15:32:01
原創
3553 人瀏覽過

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為例:

<?php
include &#39;DiffieHellman.php&#39;;
 
/*
 *   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教學


以上是PHP實作迪菲赫曼金鑰交換(Diffie–Hellman)演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板