openssl dh compute key()
openssl_dh_compute_key
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
openssl_dh_compute_key — Beräknar delad hemlighet för det publika värdet av fjärr-DH-nyckeln och lokal DH-nyckel
Beskrivning
openssl_dh_compute_key(string $public_key, #[\SensitiveParameter] OpenSSLAsymmetricKey $private_key): string|false
Den delade hemligheten som returneras av `openssl_dh_compute_key()` används ofta som krypteringsnyckel för att hemligt kommunicera med en fjärrpart. Detta är känt som Diffie-Hellman nyckelutbyte.
Varning: Det är viktigt att använda samma DH-parametrar för fjärr- och lokala nyckelpar; annars kommer den genererade hemligheten mellan de två parterna inte att stämma överens.
Notera: ECDH stöds endast från och med PHP 8.1.0 och OpenSSL 3.0.0.
Parametrar
public_key DH-publik nyckel från fjärrparten.
private_key En lokal DH-privat nyckel som motsvarar den publika nyckeln som ska delas med fjärrparten.
Returvärden
Returnerar den delade hemligheten vid framgång eller false vid misslyckande.
Ändringslogg
Version | Beskrivning |
---|---|
8.0.0 | private_key accepterar nu en OpenSSLAsymmetricKey; tidigare accepterades en resurs av typen OpenSSL key. |
Exempel
Exempel #1 Beräkna en delad hemlighet
Först, generera ett privat/publikt DH-nyckelpar lokalt och låt fjärrparten göra detsamma. Vi behöver använda OpenSSL-kommandoradsverktyget.
# generera privat/publik nyckelpar openssl dhparam -out dhparam.pem 2048 openssl genpkey -paramfile dhparam.pem -out privatekey.pem # extrahera endast publik nyckel openssl pkey -in privatekey.pem -pubout -out publickey.pem
Skicka din publika nyckel till fjärrparten. Använd openssl pkey-kommandot för att se den publika nyckeln du kommer att få från fjärrparten.
openssl pkey -pubin -in remotepublickey.pem -text -noout
Exemplet ovan kommer att ge ett resultat liknande:
PKCS#3 DH Public-Key: (2048 bit) public-key: 67:e5:e5:fa:e0:7b:0f:96:2c:dc:96:44:5f:50:02:... [...förkortat...]
Använd denna publika nyckel som en parameter till `openssl_dh_compute_key()` för att beräkna den delade hemligheten.
<?php $remote_public_key = '67e5e5fae07b0f962cdc96445f50029e8dc26c0468b0d11d7566fc63f5e34230b896c145cc0860b4213bddee6688db77d91e1189d45cf27af2f1fe1c779d6f13b8b25600efcb3b6079740298f5f98e3eb56208deca8cc3404a8079d5430617a81956afcc955ee2322dd2147b765a9af13c767635cc7bc1a5f439e5b6ca713f7c3f97e5ab86c1cd0ee6ee04c9e62d807e59c049ebb6644fa8f9bba387b33d76019e2b1694a43730fb35e263be2390b9ef3f464604948f60797a5155d61a1df5d97f4a3eaaacb0d082ccc2e094e054c117830b74084d5a79aeff7f1c04ab23394aae87835543ab7a7c049d2080bbaf5f16a3e320b921478cf87fa860809e617736'; $local_priv_key = openssl_pkey_get_private('file://privatekey.pem'); $shared_secret = openssl_dh_compute_key(hex2bin($remote_public_key), $local_priv_key); echo bin2hex($shared_secret)."\n"; ?>
Se även
- openssl_pkey_new() - Genererar en ny privat nyckel
- openssl_pkey_get_details() - Returnerar en array med nyckeldetaljer
- openssl_pkey_get_private() - Hämtar en privat nyckel
- openssl_pkey_get_public() - Extraherar publik nyckel från certifikat och förbereder för användning
Sidslut
Orginalhemsidan på Engelska :https://www.php.net/manual/en/function.openssl-dh-compute-key.php PHP Funktioner Funktionsreferens OpenSSL-funktioner
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp som har sponsrat Linux.se med webserver.