函数名称:openssl_open()
适用版本:PHP 4 >= 4.0.6, PHP 5, PHP 7
函数描述:openssl_open()函数用于使用非对称加密算法打开并解密由openssl_seal()函数加密的数据。
用法: openssl_open ( string $sealed_data , string &$open_data , string $env_key , mixed $priv_key_id [, string $method = "RC4" [, string &$iv = "" ]] ) : bool
参数:
- sealed_data:已加密的数据,由openssl_seal()函数生成。
- open_data:解密后的数据将存储在此变量中。
- env_key:用于解密数据的环境密钥。
- priv_key_id:私钥标识符,可以是一个字符串表示的私钥文件的路径,或者是之前通过openssl_get_privatekey()函数获取的私钥资源句柄。
- method(可选):解密算法的名称。默认为"RC4",也可以使用其他可用的算法,如"AES-128-CBC"。
- iv(可选):初始化向量(IV),用于加密算法。默认为空字符串。
返回值: 如果解密成功,则返回true,否则返回false。
示例:
<?php
// 加密数据
$plaintext = "Hello, World!";
$keys = openssl_pkey_new();
openssl_seal($plaintext, $sealed_data, $env_keys, array($keys));
// 解密数据
$private_key = openssl_pkey_get_private($keys);
if (openssl_open($sealed_data, $open_data, $env_keys[0], $private_key)) {
echo "解密后的数据:{$open_data}";
} else {
echo "解密失败";
}
?>
以上示例中,我们首先生成了一对公钥和私钥,然后使用openssl_seal()函数对明文数据进行加密。接着,我们使用openssl_open()函数对加密后的数据进行解密,并将解密后的数据存储在$open_data变量中。最后,我们根据解密的结果输出相应的信息。