函数名称:openssl_encrypt()
适用版本:PHP 5 >= 5.3.0, PHP 7
函数描述:openssl_encrypt() 函数用于对数据进行加密。
语法:string openssl_encrypt ( string $data , string $method , string $password [, int $options = 0 [, string $iv = "" [, string &$tag = NULL [, string $aad = "" [, int $tag_length = 16 ]]]]] )
参数说明:
- $data:需要加密的数据,可以是字符串或者是字节数组。
- $method:加密算法,可以是以下之一:
- AES-128-CBC
- AES-192-CBC
- AES-256-CBC
- AES-128-CTR
- AES-192-CTR
- AES-256-CTR
- AES-128-GCM
- AES-192-GCM
- AES-256-GCM
- $password:加密密码,字符串类型。
- $options:可选参数,指定加密模式或填充方式。默认为0,表示使用PKCS7填充。
- $iv:可选参数,初始化向量,字符串类型。对于 CBC、CFB、OFB 和 STREAM 模式,必须提供一个初始化向量。对于 ECB 模式,不需要提供。
- $tag:可选参数,用于存储验证标签。只有在使用 GCM 模式时才需要提供。
- $aad:可选参数,附加的认证数据,字符串类型。只有在使用 GCM 模式时才需要提供。
- $tag_length:可选参数,用于指定生成的认证标签长度。只有在使用 GCM 模式时才需要提供。
返回值:加密后的数据,以字符串形式返回。
示例:
$data = "Hello, world!";
$method = "AES-256-CBC";
$password = "myPassword";
$options = 0;
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($method));
$encrypted = openssl_encrypt($data, $method, $password, $options, $iv);
echo "加密后的数据:".$encrypted."\n";
$decrypted = openssl_decrypt($encrypted, $method, $password, $options, $iv);
echo "解密后的数据:".$decrypted."\n";
输出结果:
加密后的数据:5B7n0m0qMF0nXbU2XnU0xY0oXf7n3V5l1G6q5u5n4y1=
解密后的数据:Hello, world!
注意事项:
- 在使用 CBC、CFB、OFB 和 STREAM 模式时,必须提供一个随机生成的初始化向量(IV)。
- 密码应该是足够强大的,以确保加密的安全性。
- 加密和解密时的参数(数据、加密算法、密码、选项和初始化向量)必须一致,否则解密将失败。