迪菲-赫爾曼密鑰交換(Diffie–Hellman)算法原理和PHP實(shí)現(xiàn)版
迪菲-赫爾曼(Diffie–Hellman)是一個(gè)可以讓雙方在不安全的公共信道上建立秘鑰的一種算法,雙方后期就可以利用這個(gè)秘鑰加密(如RC4)內(nèi)容。
迪菲-赫爾曼(Diffie–Hellman)算法原理很簡(jiǎn)單:
如上原理,最后很容易通過數(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é)問題)。
很多語言都對(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
相關(guān)文章
PHP學(xué)習(xí)記錄之面向?qū)ο螅∣bject-oriented programming,OOP)基礎(chǔ)【接口、抽象類、靜態(tài)方法等
這篇文章主要介紹了PHP學(xué)習(xí)記錄之面向?qū)ο螅∣bject-oriented programming,OOP)基礎(chǔ),結(jié)合實(shí)例形式分析了PHP面向?qū)ο蟪绦蛟O(shè)計(jì)中接口、抽象類、靜態(tài)方法等相關(guān)概念、原理、用法與操作注意事項(xiàng),需要的朋友可以參考下2019-12-12PHP大批量插入數(shù)據(jù)庫的3種方法和速度對(duì)比
這篇文章主要介紹了PHP大批量插入數(shù)據(jù)庫的3種方法和速度對(duì)比,3種方法分別使用普通insert語句、insert into語句和事務(wù)提交,需要的朋友可以參考下2014-07-07實(shí)現(xiàn)WordPress主題側(cè)邊欄切換功能的PHP腳本詳解
這篇文章主要介紹了實(shí)現(xiàn)WordPress主題側(cè)邊欄切換功能的PHP腳本詳解,包括為WordPress主題添加管理選項(xiàng)的方法,需要的朋友可以參考下2015-12-12thinkphp5.1的model模型自動(dòng)更新update_time字段實(shí)例講解
這篇文章主要介紹了thinkphp5.1的model模型自動(dòng)更新update_time字段實(shí)例講解,文章代碼示例比較簡(jiǎn)單實(shí)用,有正在學(xué)習(xí)tp的同學(xué)可以跟著小編好好閱讀下2021-03-03