Javascript中的加密数据未使用php正确解密

Javascript中的加密数据未使用php正确解密,javascript,php,encryption,mcrypt,cryptojs,Javascript,Php,Encryption,Mcrypt,Cryptojs,我用javascript中的Cryptojs加密这个函数 function encode(text, skey) { var base64Iv = "0123456789abcdef"; var key = CryptoJS.enc.Base64.parse(skey); var iv = CryptoJS.enc.Base64.parse(base64Iv); var encrypted = CryptoJS.AES.encrypt(CryptoJS.enc

我用javascript中的Cryptojs加密这个函数

  function encode(text, skey) {
    var base64Iv = "0123456789abcdef";
    var key = CryptoJS.enc.Base64.parse(skey);
    var iv = CryptoJS.enc.Base64.parse(base64Iv);
    var encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(text), key, {iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7});
    var encryptedData = encrypted.toString();
    return encryptedData;   
}
并尝试用php_mcrypt通过这个函数对其进行解密

    function decrypt($crypt, $key, $type){
      $enc = MCRYPT_RIJNDAEL_128;
      $mode = MCRYPT_MODE_CBC;
      $iv = "0123456789abcdef";
      $crypt = base64_decode($crypt);
      $padtext = mcrypt_decrypt($enc, base64_decode($key) , $crypt, $mode, $iv);
      echo ("PADTEXT"+$padtext);
      $pad = ord($padtext
        {
        strlen($padtext) - 1});
        if ($pad > strlen($padtext)) return false;
        if (strspn($padtext, $padtext{ strlen($padtext) - 1}, strlen($padtext) - $pad) != $pad)
                {
                $text = "Error";
                }

            $text = substr($padtext, 0, -1 * $pad);
            echo ("TEXT "+$text);
            return $text;
}
我使用的是相同的密钥和iv,但是它没有正确地解密字符串的开头

预期结果: 00paygate | 201710270001 | 12345 | 16 |美元|印度卢比|销售|

实际结果:
00�-ܗ�ڀ��x��RTWQ0001 | 12345 | 16 |美元|印度卢比|销售|

为什么要在javascript中使用加密,而不是简单的https?您的IV逻辑毫无意义。如果不是base64,为什么要从base64解码IV?首先在JavaScript中修复此问题。