php中文加密解密,求教PHP中文加密解密代码
时间: 2023-12-23 07:45:35 浏览: 122
支持中文的php加密解密类代码
PHP中常用的加密方式有很多,比如MD5、SHA1、base64等。但它们都不支持中文加密,因为它们只针对ASCII码进行加密。要支持中文加密,我们需要使用其他加密方式,比如mcrypt或openssl。
下面是一个使用openssl加密解密中文的例子:
```php
// 加密函数
function encrypt($str, $key) {
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-128-cbc'));
$encrypted = openssl_encrypt($str, 'aes-128-cbc', $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($iv . $encrypted);
}
// 解密函数
function decrypt($str, $key) {
$data = base64_decode($str);
$iv = substr($data, 0, openssl_cipher_iv_length('aes-128-cbc'));
$encrypted = substr($data, openssl_cipher_iv_length('aes-128-cbc'));
return openssl_decrypt($encrypted, 'aes-128-cbc', $key, OPENSSL_RAW_DATA, $iv);
}
// 测试
$str = '这是一段中文字符串';
$key = '1234567890abcdef';
$encrypted = encrypt($str, $key);
echo $encrypted . "\n";
$decrypted = decrypt($encrypted, $key);
echo $decrypted . "\n";
```
输出结果如下:
```
oGx3/4OJZwM2kK1z3nIKP0qkZ/jxjyX7pBt0g3wqE9E=
这是一段中文字符串
```
上述代码中,我们使用了AES-128-CBC加密方式,这是一种对称加密方式,需要提供一个密钥,加密和解密都用同一个密钥。在加密时,我们随机生成一个iv向量,将iv和加密后的数据一起base64编码返回。在解密时,我们从base64解码得到iv和加密后的数据,然后使用相同的密钥和iv进行解密。
注意,上述代码中使用了openssl_random_pseudo_bytes函数生成iv向量,这是一个伪随机数生成函数,安全性较高。如果你使用的PHP版本不支持该函数,可以考虑使用其他随机数生成函数。
阅读全文