strlen($text)) { // return false; // } // if (strspn($text, chr($pad), strlen($text) - $pad) != $pad){ // return false; // } // return substr($text, 0, -1 * $pad); // } // private static function PaddingPKCS7($data) { // $block_size = mcrypt_get_block_size(MCRYPT_3DES, MCRYPT_MODE_CBC); // $padding_char = $block_size - (strlen($data) % $block_size); // $data .= str_repeat(chr($padding_char),$padding_char); // return $data; // } /** * AES */ private static function addPkcs7Padding($string, $blocksize = 32) { $len = strlen($string); //取得字符串长度 $pad = $blocksize - ($len % $blocksize); //取得补码的长度 $string .= str_repeat(chr($pad), $pad); //用ASCII码为补码长度的字符, 补足最后一段 return $string; } public static function aes256cbcEncrypt($str,$key, $iv ) { return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key,self::addPkcs7Padding($str) , MCRYPT_MODE_CBC, $iv)); } private static function stripPkcs7Padding($string){ $slast = ord(substr($string, -1)); $slastc = chr($slast); $pcheck = substr($string, -$slast); if(preg_match("/$slastc{".$slast."}/", $string)){ $string = substr($string, 0, strlen($string)-$slast); return $string; } else { return false; } } public static function aes256cbcDecrypt($encryptedText, $key, $iv) { $encryptedText =base64_decode($encryptedText); return self::stripPkcs7Padding(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $encryptedText, MCRYPT_MODE_CBC, $iv)); } public static function aes128cbcDecrypt($encryptedText, $key, $iv) { $encryptedText =base64_decode($encryptedText); return self::stripPkcs7Padding(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encryptedText, MCRYPT_MODE_CBC, $iv)); } private static function hexToStr($hex)//十六进制转字符串 { $string=""; for($i=0;$iaddPkcs7Padding($str,16) $base = (mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key,self::addPkcs7Padding($str,16) , MCRYPT_MODE_CBC, $iv)); return self::strToHex($base); } }