函数名称:openssl_decrypt()
函数描述:openssl_decrypt() 函数用于对使用 OpenSSL 加密的数据进行解密。
适用版本:该函数适用于 PHP 5 >= 5.3.0, PHP 7, PHP 8
用法: openssl_decrypt(string $data, string $method, string $password, int $options = 0, string $iv = "", string $tag = "", string $aad = "")
参数:
- $data:要解密的数据,通常是使用 openssl_encrypt() 函数加密后的数据。
- $method:指定加密算法,可以是以下之一:
- "AES-128-CBC":128 位 AES 加密算法,使用 CBC 模式。
- "AES-192-CBC":192 位 AES 加密算法,使用 CBC 模式。
- "AES-256-CBC":256 位 AES 加密算法,使用 CBC 模式。
- "BF-CBC":Blowfish 加密算法,使用 CBC 模式。
- "CAST5-CBC":CAST5 加密算法,使用 CBC 模式。
- "DES-CBC":DES 加密算法,使用 CBC 模式。
- "DES-EDE3-CBC":3DES 加密算法,使用 CBC 模式。
- "RC2-CBC":RC2 加密算法,使用 CBC 模式。
- "RC4":RC4 加密算法。
- $password:用于解密的密码。
- $options:可选参数,指定解密选项。默认为 0,表示不使用任何选项。可以使用以下选项的按位或(|)组合:
- OPENSSL_RAW_DATA:指定解密结果以原始二进制数据返回,而不是默认的 base64 编码字符串。
- OPENSSL_ZERO_PADDING:指定禁用自动填充功能,解密时不会自动删除填充的数据。
- $iv:可选参数,指定初始化向量(IV)。在使用 CBC 或 ECB 模式时需要提供。
- $tag:可选参数,指定验证标签。在使用 AEAD 加密算法时需要提供。
- $aad:可选参数,指定附加的认证数据。在使用 AEAD 加密算法时需要提供。
返回值:解密成功时返回解密后的数据,失败时返回 false。
示例:
$key = "my_secret_key";
$encryptedData = "U2FsdGVkX1/9r9lq7rX7V1Uv+Gc9Z3w8";
$decryptedData = openssl_decrypt($encryptedData, "AES-256-CBC", $key, 0);
echo $decryptedData; // 输出:Hello World!
注意事项:
- 请确保 OpenSSL 扩展已启用,可以通过在 php.ini 文件中取消注释
extension=openssl
来启用。 - 使用正确的密码和加密算法进行解密,否则会导致解密失败。
- 在使用 CBC 或 ECB 模式时,需要提供正确的初始化向量(IV)。
- 在使用 AEAD 加密算法时,需要提供正确的验证标签和附加的认证数据。