函式名: openssl_private_decrypt()
適用版本: PHP 4 >= 4.0.6, PHP 5, PHP 7
用法: openssl_private_decrypt(string $data, string &$decrypted, mixed $key [, int $padding = OPENSSL_PKCS1_PADDING [, string $cipher_algo = '']]): bool
說明:此函式用於使用私鑰對資料進行解密。私鑰必須由openssl_pkey_get_private()函式匯入。
引數:
- $data:要解密的資料。
- &$decrypted:解密後的資料將儲存在該變數中。
- $key:私鑰,可以是PEM格式的字串、OpenSSL key資源或者由openssl_pkey_get_private()返回的私鑰資源。
- $padding(可選):指定填充模式,預設為OPENSSL_PKCS1_PADDING。
- $cipher_algo(可選):指定加密演算法,預設為空字串。如果未指定,則使用預設的openssl_get_cipher_methods()中的第一個演算法。
返回值:如果解密成功,則返回true,否則返回false。
示例:
// PEM格式的私鑰
$privateKey = <<<EOD
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQC1z3Qq7i1h/2ZyB4fz3QR1CnC3ZoN4y5zTbQ7W8S7wH0lE8M5h
...
-----END RSA PRIVATE KEY-----
EOD;
// 加密的資料
$encryptedData = base64_decode("...");
// 匯入私鑰
$privateKeyResource = openssl_pkey_get_private($privateKey);
// 解密資料
openssl_private_decrypt($encryptedData, $decryptedData, $privateKeyResource);
// 輸出解密後的資料
echo $decryptedData;
注意事項:
- 在使用openssl_private_decrypt()函式之前,必須先匯入私鑰。
- 解密成功後,解密後的資料將儲存在傳遞給函式的第二個引數中(即&$decrypted)。
- 如果解密失敗,函式將返回false。
- 可以透過指定填充模式和加密演算法來自定義解密過程,但通常使用預設值即可。