我有一个使用 symfony 框架构建的旧 wordpress 插件,它使用mcrypt_get_block_size('tripledes', 'ecb'). 但是,我刚刚将服务器上的 php 升级到 7.3 版,现在我得到了一个Fatal error: Call to undefined function HealthShieldForm\mcrypt_encrypt().
我读过几篇他们建议使用openssl_encrypt(). 不幸的是,我不知道从哪里开始用彼此替换功能并确保我得到相同的结果。
我目前的代码是这样的:
private function encrypt($data)
{
//Pad for PKCS7
$blockSize = mcrypt_get_block_size('tripledes', 'ecb');
$len = strlen($data);
$pad = $blockSize - ($len % $blockSize);
$data .= str_repeat(chr($pad), $pad);
//Encrypt data
$encData = mcrypt_encrypt('tripledes', $this->key, $data, 'ecb');
return base64_encode($encData);
}
private function decrypt($data)
{
$data = base64_decode($data);
$data = mcrypt_decrypt('tripledes', $this->key, $data, 'ecb');
$block = mcrypt_get_block_size('tripledes', 'ecb');
$len = strlen($data);
$pad = ord($data[$len - 1]);
return substr($data, 0, strlen($data) - $pad);
}
更新
我改编了彼得的例子来反映我的代码:
function encrypt($data)
{
$ciphertext = openssl_encrypt($data, 'des-ede3-ecb', $this->key, OPENSSL_RAW_DATA);
return base64_encode($ciphertext);
}
function decrypt($data)
{
$ciphertext = base64_decode($data);
$plaintext = openssl_decrypt($ciphertext, 'des-ede3-ecb', $this->key, OPENSSL_RAW_DATA);
return $plaintext;
}
但是,现在我收到此错误: Warning: openssl_encrypt(): Unknown cipher algorithm
繁星coding