函式名稱:openssl_pkey_derive()
適用版本:PHP 5 >= 5.6.0, PHP 7
函式說明:openssl_pkey_derive()函式透過使用私鑰計算共享金鑰,用於金鑰交換協議。
語法:openssl_pkey_derive(resource $private_key, string $public_key, int $key_length)
引數:
- $private_key: 私鑰資源,通常透過openssl_pkey_get_private()函式獲取。
- $public_key: 公鑰,通常是對方的公鑰。
- $key_length: 所需的共享金鑰長度(以位元組為單位),通常與加密演算法相關。
返回值:返回共享金鑰,以字串形式表示。
示例:
// 生成私鑰和公鑰
$private_key = openssl_pkey_new();
$private_key_details = openssl_pkey_get_details($private_key);
$public_key = $private_key_details['key'];
// 對方的公鑰
$peer_public_key = "-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2i5LrQ8z3zN3q0Wfz0Ji3ZpA3
1zqGtKjey3ZP8Xg0vKJ7wJ0jCt6J3vJUyXVtQyfD6GkVU3K3cTcYs1VcF52JPJ5A
6q8YGfGzS3YrJ0dQZDlqkzP0sZqNvWw/3s6ArjzU3aH3Zv5FJ4Wyl3Zd0oP3cOxo
DyUyjVQ6nRn6+KuZ2wIDAQAB
-----END PUBLIC KEY-----";
// 計算共享金鑰
$shared_key = openssl_pkey_derive($private_key, $peer_public_key, 32);
// 輸出共享金鑰
echo bin2hex($shared_key); // 將共享金鑰轉換為十六進位制字串形式
以上示例中,首先使用openssl_pkey_new()函式生成一個新的私鑰和公鑰對。然後,將對方的公鑰賦值給$peer_public_key變數。最後,呼叫openssl_pkey_derive()函式計算共享金鑰,並將結果儲存在$shared_key變數中。最後,透過bin2hex()函式將共享金鑰轉換為十六進位制字串形式進行輸出。
請注意,示例中的公鑰和私鑰僅用於說明目的,實際使用時應使用真實的金鑰。