Шифрование библиотеки 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));

пожалуйста, укажите ошибку.

kmg kumar 17.12.2018 13:19

Как мне настроить IV

user6838184 18.12.2018 05:57

ты решил проблему? Если да, не могли бы вы принять ответ?

kelalaka 30.01.2019 20:09
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
366
1

Ответы 1

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

Generate a random initialization vector (IV).

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

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

Есть ли способ добавить IV в CI3?

user6838184 18.12.2018 06:04

Если вы посмотрите на message length в документации, the IV prepended to the cipher-text and the HMAC authentication message that is also prepended. Документ не говорит о разделителе, но, просмотрев вывод, вы можете увидеть формат. Остальное объединяется и объединяется.

kelalaka 18.12.2018 08:18

Другие вопросы по теме