jsAES 加密php怎么对接

这是js代码

function encrypt (text, originKey) {
    var originKey = originKey.slice(0, 16),
        key = CryptoJS.enc.Utf8.parse(originKey),
        iv = CryptoJS.enc.Utf8.parse(originKey),
        msg = JSON.stringify(text)
    var ciphertext = CryptoJS.AES.encrypt(msg, key, {
        iv: iv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    });
    return ciphertext.toString()
}

这是我的php代码

 public function encrypt ($text, $keys){
        $text = json_encode($text);
        $text =$this->addPKCS7Padding($text);
        $key = substr($keys,0, 16);
        $iv = substr($keys,0, 16);
        $encrypt_str = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv);
        return base64_encode($encrypt_str);
    }

addPKCS7Padding函数的代码

 public function addPKCS7Padding($source) {
        $source = trim($source);
        $block = mcrypt_get_block_size('rijndael-128', 'cbc');
        $pad = $block - (strlen($source) % $block);
        if ($pad <= $block) {
            $char = bin2hex($pad);
            $source .= str_repeat($char, $pad);
        }
        return $source;
    }

这样加密出来的数据一直不对

阅读 2.5k
1 个回答
class EncryAes
{
    static function encrypt($data,$key,$iv)
    {
        $cipher = MCRYPT_RIJNDAEL_128;
        $mode = MCRYPT_MODE_CBC;
        $data=json_encode($data);
        $encrypt_data = mcrypt_encrypt($cipher, $key, $data, $mode, $iv);
        $data= base64_encode($encrypt_data);
        return $data;
    }

    static function decrypt($data,$key,$iv)
    {
        $cipher = MCRYPT_RIJNDAEL_128;
        $mode = MCRYPT_MODE_CBC;
        $decrypt_data=base64_decode($data);
        $data = mcrypt_decrypt($cipher, $key,$decrypt_data , $mode, $iv);
        $data =rtrim($data);
        $data=json_decode($data, true);
        //$data = rtrim(rtrim($data), "..");
        return $data;
    }

    
}

更多请参考http://phpseclib.sourceforge.net

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题