openssl_encrypt utf8
时间: 2023-06-28 12:08:01 浏览: 59
如果你想使用 OpenSSL 执行 UTF-8 编码的加密,你需要在加密前将 UTF-8 转换为二进制数据。这可以通过使用 PHP 内置的 `mb_convert_encoding` 函数来完成。
以下是一个示例代码,它将使用 OpenSSL 对 UTF-8 字符串进行 AES-256-CBC 加密:
```php
$key = 'my-secret-key';
$data = 'Hello, 世界!';
// 将 UTF-8 转换为二进制
$data = mb_convert_encoding($data, 'utf-8', 'auto');
// 生成随机的初始化向量
$ivlen = openssl_cipher_iv_length('aes-256-cbc');
$iv = openssl_random_pseudo_bytes($ivlen);
// 加密数据
$encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
// 将初始化向量和加密后的数据合并
$result = base64_encode($iv . $encrypted);
```
在上面的示例中,我们使用 `mb_convert_encoding` 将 UTF-8 字符串转换为二进制数据。然后,我们使用 `openssl_encrypt` 函数执行 AES-256-CBC 加密,并将其与初始化向量合并为一个字符串。最后,我们使用 `base64_encode` 函数对结果进行编码,以便于传输或存储。