Расшифровать данные, зашифрованные с помощью MCRYPT_RIJNDAEL_128.

CCAvenue использует MCRYPT_RIJNDAEL_128 для шифрования данных транзакций. Поскольку на моем сервере работает PHP 7.1, я не могу расшифровать эти данные.

Есть ли обходной путь для расшифровки этой строки на PHP 7.1 или мне нужно перейти на PHP 5, чтобы это заработало.

Код расшифровки от ccavenue

    function decrypt($encryptedText,$key)
    {
        $secretKey = hextobin(md5($key));
        $initVector = pack("C*", 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
        $encryptedText=hextobin($encryptedText);
        $openMode = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '','cbc', '');
        mcrypt_generic_init($openMode, $secretKey, $initVector);
        $decryptedText = mdecrypt_generic($openMode, $encryptedText);
        $decryptedText = rtrim($decryptedText, "\0");
        mcrypt_generic_deinit($openMode);
        return $decryptedText;

    }

Ответ на расшифровку

Call to undefined function mcrypt_module_open()

person de-bugged    schedule 07.06.2018    source источник
comment
helpdoc.info/   -  person helpdoc    schedule 03.01.2019


Ответы (2)


Ok. Оказывается, наш CCAvenue выпустил версию, совместимую с PHP 7.1.

Открытая SSL-совместимая версия кода

function encrypt($plainText,$key)
{
  $key = hextobin(md5($key));
  $initVector = pack("C*", 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
  $openMode = openssl_encrypt($plainText, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $initVector);
  $encryptedText = bin2hex($openMode);
  return $encryptedText;
}

function decrypt($encryptedText,$key)
{
  $key = hextobin(md5($key));
  $initVector = pack("C*", 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
  $encryptedText = hextobin($encryptedText);
  $decryptedText = openssl_decrypt($encryptedText, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $initVector);
  return $decryptedText;

}
person de-bugged    schedule 11.06.2018
comment
Где вы увидели этот код? Я использую этот репозиторий и не вижу таких обновлений: github.com/kishanio/ CCavenue-PHP-библиотека - person Devin Walker; 14.11.2018
comment
Примечание: hextobin должно быть hex2bin php.net/manual/en/function.hex2bin.php< /а> - person Devin Walker; 14.11.2018
comment
Да, код недоступен ни в одном репо, пришлось обратиться в службу поддержки, чтобы получить код - person de-bugged; 14.11.2018

Попробуйте использовать openssl_encrypt($input, 'AES-128-CBC', "KEY", OPENSSL_RAW_DATA, $iv);

person Conal Mittal    schedule 07.06.2018
comment
Пытался. Я получаю ответ как ложь - person de-bugged; 07.06.2018
comment
mcrypt устарел в php7.1, но я думаю, что он еще не удален. - person Conal Mittal; 07.06.2018
comment
Неа. я получаю вызов неопределенной функции mcrypt_module_open() с ошибкой - person de-bugged; 08.06.2018
comment
Вы установили и включили mcrypt в - person Conal Mittal; 08.06.2018
comment
Не заинтересован в установке устаревшей библиотеки в моем новом проекте. Если ничего не получится, это будет последний вариант - person de-bugged; 11.06.2018