函式:openssl_seal()
適用版本:PHP 4 >= 4.0.4, PHP 5, PHP 7
用法:openssl_seal()函式用於對資料進行加密,並使用公鑰加密金鑰。加密後的資料和加密金鑰將被儲存在一個陣列中,並可以透過私鑰解密。
語法:int openssl_seal ( string $data , string &$sealed_data , array &$env_keys , array $pub_key_ids [, string $method = OPENSSL_CIPHER_RC4 ] )
引數:
- $data:需要加密的資料。
- &$sealed_data:加密後的資料將儲存在此變數中。
- &$env_keys:加密金鑰將儲存在此變數中。
- $pub_key_ids:公鑰的陣列,用於加密金鑰。
- $method(可選):加密演算法的名稱,預設為OPENSSL_CIPHER_RC4。
返回值:成功時返回1,失敗時返回0。
示例:
// 建立一個公鑰/私鑰對
$privateKey = openssl_pkey_new();
openssl_pkey_export($privateKey, $privateKeyString);
$publicKey = openssl_pkey_get_details($privateKey)['key'];
// 加密資料
$data = "This is a secret message.";
$sealedData = '';
$envKeys = [];
openssl_seal($data, $sealedData, $envKeys, [$publicKey]);
// 解密資料
$privateKey = openssl_pkey_get_private($privateKeyString);
$openedData = '';
openssl_open($sealedData, $openedData, $envKeys[0], $privateKey);
echo $openedData; // 輸出:This is a secret message.
上述示例中,我們首先生成了一個公鑰/私鑰對。然後,我們使用openssl_seal()函式對資料進行加密,並將加密後的資料和加密金鑰儲存在$sealedData和$envKeys變數中。接下來,我們使用私鑰openssl_open()函式解密資料,並將解密後的資料儲存在$openedData變數中。最後,我們輸出解密後的資料,即原始的秘密訊息。