Я обновил мою версию php до 7.1. У меня были функции, где я шифровал данные с помощью mcrypt. Теперь эта функция устарела.Как дешифровать после стирания Mcrypt?
Как я могу расшифровать данные в любом случае с возвратом к старым версиям php.
Это код, который я использовал:
public function encrypt($plaintext) {
$ivSize = mcrypt_get_iv_size(self::CIPHER, self::MODE);
$iv = mcrypt_create_iv($ivSize, MCRYPT_DEV_URANDOM);
$ciphertext = mcrypt_encrypt(self::CIPHER, $this->key, $plaintext, self::MODE, $iv);
return base64_encode($iv.$ciphertext);
}
public function decrypt($ciphertext) {
$ciphertext = base64_decode($ciphertext);
$ivSize = mcrypt_get_iv_size(self::CIPHER, self::MODE);
if (strlen($ciphertext) < $ivSize) {
throw new Exception('Missing initialization vector');
}
$iv = substr($ciphertext, 0, $ivSize);
$ciphertext = substr($ciphertext, $ivSize);
$plaintext = mcrypt_decrypt(self::CIPHER, $this->key, $ciphertext, self::MODE, $iv);
return rtrim($plaintext, "\0");
}
С Константы:
const CIPHER = MCRYPT_RIJNDAEL_128; // Rijndael-128 is AES
const MODE = MCRYPT_MODE_CBC;
я увидел, что это было рекомендовано использовать OpenSSL. Это то, что я буду использовать с этого момента. Но как я могу расшифровать старые данные с помощью этого метода?
Благодаря
Edit: Я знаю, что я могу использовать OpenSSL в качестве альтернативы. То, что я делаю для контента с этого момента. Но мне нужно расшифровать мой сшитый код из моего старого содержимого.
* Редактировать запрос @symcbean
Пробовал расшифровать с помощью OpenSSL, как это:
public function decrypt($ciphertext) {
$ciphertext = base64_decode($ciphertext);
if (!function_exists("openssl_decrypt")) {
throw new Exception("aesDecrypt needs openssl php module.");
}
$key = $this->key;
$method = 'AES-256-CBC';
$ivSize = openssl_cipher_iv_length($method);
$iv = substr($ciphertext,0,$ivSize);
$data = substr($ciphertext,$ivSize);
$clear = openssl_decrypt ($data, $method, $key, 'OPENSSL_RAW_DATA'|'OPENSSL_ZERO_PADDING', $iv);
return $clear;
}
Возможный дубликат [PHP 7 - mcrypt устарел, нужна альтернатива] (http://stackoverflow.com/questions/41272257/php-7-mcrypt-deprecated-need-alternative) – Ben
Его нет. Мне не нужна альтернатива. Я знаю, что могу использовать openssl. Но мне нужно расшифровать мой mcrypted контент. –
@Ben: не согласен - это обсуждение паролей, и принятый ответ не касается конкретной проблемы дешифрования. – symcbean