Codeigniter 3 Mcrypt библиотека шифрование не работает

Как мне настроить мой IV в библиотеке шифрования codeigniter 3?

У меня есть код шифрования ниже, который работал гладко в Codeigniter 2 с PHP 5.6,

function encrypt($data, $secret)
{
//Generate a key from a hash
$key    = md5(utf8_encode($secret), true);
$data2  = utf8_encode($data);
$iv     = utf8_encode("jvz8bUAx");

//Take first 8 bytes of $key and append them to the end of $key.
$key .= substr($key, 0, 8);

//Pad for PKCS7
$blockSize = mcrypt_get_block_size('tripledes', 'cbc');

//Encrypt data
$encData = mcrypt_encrypt('tripledes', $key, $data2, MCRYPT_MODE_CBC, $iv);

return urlencode(base64_encode($encData));
}

Когда я обновился до CI 3 с PHP 7.1, mcrypt уже устарел. Итак, я хотел воссоздать функцию в CI 3, используя шифрование библиотека, но я не могу получить правильные зашифрованные строки.

$this->load->library('encryption');

$key = md5(utf8_encode($secret), true);
$key .= substr($key, 0, 8);
$iv = utf8_encode("jvz8bUAx");

$amount = 1100;

$json = array(
'Amount' => $amount
);

$data = json_encode($json);

$params = array(
'driver' => 'mcrypt',
'cipher' => 'tripledes',
'mode' => 'cbc',
'key' => $key,
'hmac' => false
);

$ciphertext = $this->encryption->encrypt($data, $params);
$ciphertext = urlencode(base64_encode($ciphertext));

0

Решение

в CI Как это работает

Генерация случайного вектора инициализации (IV).

Библиотека генерирует IV для вас и затем добавляет его для вас к полученному зашифрованному тексту. Во время дешифрования IV извлекается из зашифрованного текста.

Поскольку по умолчанию вы не можете контролировать IV, зашифрованный текст будет другим. Если вы хотите действительно расшифровать шифрование старой библиотеки с помощью новой, вам нужно добавить IV, как в CI 3.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector