php - PHP Mysqli mcrypt_get_iv_size 已弃用,如何使用新功能?
问题描述
我在我的网站上使用了 mcrypt_get_iv_size 函数,现在看来它已被弃用
function Encrypt($word){
$key = '.......';
$iv = mcrypt_create_iv(
mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC),
MCRYPT_DEV_URANDOM
);
$encrypted = base64_encode(
$iv .
mcrypt_encrypt(
MCRYPT_RIJNDAEL_128,
hash('sha256', $key, true),
$word,
MCRYPT_MODE_CBC,
$iv
)
);
return $encrypted;
}
function Decrypt($word){
$key = '.......';
$data = base64_decode($word);
$iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
$decrypted = rtrim(
mcrypt_decrypt(
MCRYPT_RIJNDAEL_128,
hash('sha256', $key, true),
substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)),
MCRYPT_MODE_CBC,
$iv
),
"\0"
);
return $decrypted;
}
现在我从stackoverflow找到了一个新函数,就是这个
function Encrypt($word) {
$key = '.......';
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
$encrypted = openssl_encrypt($word, 'aes-256-cbc', $key, 0, $iv);
return base64_encode($encrypted . '::' . $iv);
}
function Decrypt($word) {
$key = '.......';
list($encrypted_data, $iv) = explode('::', base64_decode($word), 2);
return openssl_decrypt($encrypted_data, 'aes-256-cbc', $key, 0, $iv);
}
我的问题是:我是否必须使用我以前工作的 Decrypt 函数从我的数据库中导出所有加密的单词,然后用新函数对其进行加密,然后将它们导入/更新到我的数据库中?或者有没有办法只能从新功能中解密我的话?谢谢!
解决方案
推荐阅读
- python - Python RandomInfo 库 TypeError:get_email() 得到了意外的参数
- php - Html 页面中没有数据但在输出中
- java - 如何下载并立即在另一个应用程序中打开此文件
- c - 如何将 C 文件与 nasm 文件链接?
- c# - ASP.NET 的可等待事件处理程序委托
- reporting-services - 分组列格式
- node.js - 如何从节点可执行文件(电子应用程序)中读取 ini 文件
- android - 将 CustomNoActionBar 样式用于活动时应用程序崩溃
- javascript - Javascript:对象包含 100% 跨日期
- bash - 即使设置了有效的凭证,AWS CLI 也会在 Docker 上返回 (AcessDenied)