Расшифровать данные, зашифрованные с помощью MCRYPT_RIJNDAEL_128 - PullRequest
0 голосов
/ 07 июня 2018

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()

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

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

Open 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;

}
0 голосов
/ 07 июня 2018

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

...