• php aes128加密


        //[加密数据]AES 128 ECB模式
        public function aesEncrypt($str){
            $screct_key = Yii::$app->params['encryptKey'];
            $str = $this->addPKCS7Padding(trim($str));
            $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_RAND);
            $encrypt_str =  mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_ECB, $iv);
            return bin2hex($encrypt_str);
        }
    
        //[解密数据]AES 128 ECB模式
        public function aesDecrypt($str){
            $screct_key = Yii::$app->params['encryptKey'];
            //AES, 128 ECB模式加密数据
            $str=hex2bin($str);
            $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_RAND);
            $encrypt_str =  mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_ECB, $iv);
            return $this->stripPKSC7Padding($encrypt_str);
        }
    
        //[加密数据填充算法]
        function addPKCS7Padding($source){
            $source = trim($source);
            $block = mcrypt_get_block_size('rijndael-128', 'ecb');
            $pad = $block - (strlen($source) % $block);
            if ($pad <= $block) {
                $char = chr($pad);
                $source .= str_repeat($char, $pad);
            }
            return $source;
        }
    
        //[解密数据移去填充算法]
        function stripPKSC7Padding($text){ 
          $len = strlen($text);    
          $c = $text[$len-1];    
          if(ord($c) <$len){    
              for($i=$len-ord($c); $i<$len; $i++){    
                  if($text[$i] != $c){    
                      return $text;    
                  }    
              }    
              return substr($text, 0, $len-ord($c));    
          }      
        }
     public function actionIndex()
        {
            $c='yii2 php加密算法  aes128';
            $a=$this->aesEncrypt($c);
            $b=$this->aesDecrypt($a);
            echo $a;
            echo '<br>';
            echo $b;
            echo '<br>';
    }
  • 相关阅读:
    elasticsearch7.6.2实战(1)-单机快速部署
    greenplum数据库常用操作
    kafka集群搭建及结合springboot使用
    msyql主从库配置
    文本相似性算法实现(二)-分组及分句热度统计
    一点区块链资料
    使用.Net Core实现的一个图形验证码
    python中的collections.namedtuple
    Linux中的定时任务at、crontab
    es3中使用es6/7的字符串扩展
  • 原文地址:https://www.cnblogs.com/xiong63/p/6801069.html
Copyright © 2020-2023  润新知