今天连接第三方接口时,对方需要用AESCBC方式加密。这里简单写一个democlassModel_JunjingbaoextendsModel{privatestatic$_partnerKey='6d70a09e4d0f8095';//获取库存,更新价格信息publicstaticfunctiontest($productId=2780){$data=array('productId'=>$productId,'startTime'=>'2018-04-09','endTime'=>'2018-04-10');$str=json_encode($data);$xcrypt=self::aes_cbc_pkpadding($str);var_dump($xcrypt);//加密结果var_dump(self::aes_cbc_pkpadding_back($xcrypt));//解密结果}//AES加密数据privatestaticfunctionaes_cbc_pkpadding($str){$block=mcrypt_get_block_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC);$pad=$block-(strlen($str)%$block);如果($pad<=$block){$char=chr($pad);$str.=str_repeat($char,$pad);}$xcrypt=mcrypt_encrypt(MCRYPT_RIJNDAEL_256,self::$_partnerKey,$str,MCRYPT_MODE_CBC);返回$xcrypt;}//AES解密数据privatestaticfunctionaes_cbc_pkpadding_back($xcrypt){$string=mcrypt_decrypt(MCRYPT_RIJNDAEL_256,self::$_partnerKey,$xcrypt,MCRYPT_MODE_CBC);$slast=ord(substr($string,-1));$slastc=chr($slast);如果(preg_match("/$slastc{".$slast."}/",$string)){$string=substr($string,0,strlen($string))-$slast);返回$字符串;}else{返回错误;}}}执行测试方法加密结果??×?“j·A”Oè[ótcú?2Y‰XXò|??ép?p[DaFw`?oàá1d&x4(??l?2¤£‰?±ü'I?'?Y?sód°Y·^$'4h?è?A÷G?)解密结果{"productId":2780,"startTime":"2018-04-09","endTime":"2018-04-10"}
