• PHP AES cbc模式 pkcs7 128加密解密


    今天在对接一个第三方接口的时候,对方需要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"}
  • 相关阅读:
    04 body中的相关标签
    03 我的第一个html页面
    02 标签的分类
    01 前端初识
    10-pymysql的应用
    NOIP2012提高组初赛总结(题目+易错点+解析)
    NOIP2011提高组初赛总结(题目+易错点+解析)
    浅谈哈夫曼编码
    关于P类问题,NP问题,NPC问题的一些粗浅理解
    NOIP2010提高组初赛总结(题目+易错点+解析)
  • 原文地址:https://www.cnblogs.com/cnsanshao/p/12187564.html
Copyright © 2020-2023  润新知