zoukankan      html  css  js  c++  java
  • 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>';
    }
  • 相关阅读:
    MySQL
    Python练习-基于socket的FTPServer
    python练习-Socket实现远程cmd命令
    python概念-Socket到底有多骚
    Python练习-天已经亮了计算器也终于完成了
    python模块-logging的智商上限
    python正则表达式-re模块的爱恨情仇
    Python练习-os模块练习-还算是那么回事儿
    Python练习-time模块
    Python练习-跨目录调用模块
  • 原文地址:https://www.cnblogs.com/xiong63/p/6801069.html
Copyright © 2011-2022 走看看