函数名: 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。
- 可以通过指定填充模式和加密算法来自定义解密过程,但通常使用默认值即可。