У меня есть старый плагин WordPress, созданный с использованием фреймворка Symfony и использующий 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);
}
UPDATE
Я адаптировал пример Питера для отражения в моем коде:
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