PHP AES cbc模式 pkcs7 128加密解密
阿新 • • 發佈:2018-11-16
今天在對接一個第三方介面的時候,對方需要AES CBC模式下的加密。這裡簡單寫一個demo
class Model_Junjingbao extends Model { private static $_partnerKey = '6d70a09e4d0f8095'; //獲取庫存,更新價格資訊 public static function test($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加密資料 private static function aes_cbc_pkpadding($str) { $block= mcrypt_get_block_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC); $pad=$block-(strlen($str)%$block); if($pad<=$block) { $char=chr($pad); $str.=str_repeat($char,$pad); } $xcrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, self::$_partnerKey, $str, MCRYPT_MODE_CBC); return $xcrypt; } //AES解密資料 private static function aes_cbc_pkpadding_back($xcrypt) { $string = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, self::$_partnerKey, $xcrypt, MCRYPT_MODE_CBC); $slast = ord(substr($string, -1)); $slastc = chr($slast); if (preg_match("/$slastc{" . $slast . "}/", $string)) { $string = substr($string, 0, strlen($string) - $slast); return $string; } else { return false; } } }
執行test方法
加密結果
øæ׌“j·A" OÈ[ótcÚ‡2Y‰XXÒ¦½™Ép¬p[DâFw`?oàá¹d&x4(çôl£‰¡±Ü‘I¾'ä YÖsÓd°Ý·^$’4höè¶Â÷GÂ)
解密結果
{"productId":2780,"startTime":"2018-04-09","endTime":"2018-04-10"}