解密用MCRYPT_RIJNDAEL_128加密的数据

时间:2018-06-07 17:23:38

标签: php openssl mcrypt ccavenue

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 :(得分:1)

确定。转向我们的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;

}

答案 1 :(得分:0)

尝试使用openssl_encrypt($ input,'AES-128-CBC',“KEY”,OPENSSL_RAW_DATA,$ iv);