| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
ngww
10年前发布

PHP 标准AES加密算法类

分享一个标准PHP的AES加密算法类,其中mcrypt_get_block_size('rijndael-128', 'ecb');,如果在不明白原理的情况下比较容易搞错,可以通过mcrypt_list_algorithms函数查看你需要的加密算法标识。
   <?php  /**   * AES128加解密类   * @author dy   *   */  defined('InEjbuy') or exit('Access Invalid!');  class Aes{      //密钥      private $_secrect_key;               public function __construct(){          $this->_secrect_key = 'MYgGnQE2jDFADSFFDSEWsdD';      }      /**       * 加密方法       * @param string $str       * @return string       */      public function encrypt($str){          //AES, 128 ECB模式加密数据          $screct_key = $this->_secrect_key;          $screct_key = base64_decode($screct_key);          $str = trim($str);          $str = $this->addPKCS7Padding($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 base64_encode($encrypt_str);      }               /**       * 解密方法       * @param string $str       * @return string       */      public function decrypt($str){          //AES, 128 ECB模式加密数据          $screct_key = $this->_secrect_key;          $str = base64_decode($str);          $screct_key = base64_decode($screct_key);          $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);          $encrypt_str = trim($encrypt_str);          $encrypt_str = $this->stripPKSC7Padding($encrypt_str);          return $encrypt_str;               }               /**       * 填充算法       * @param string $source       * @return string       */      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;      }      /**       * 移去填充算法       * @param string $source       * @return string       */      function stripPKSC7Padding($source){          $source = trim($source);          $char = substr($source, -1);          $num = ord($char);          if($num==62)return $source;          $source = substr($source,0,-$num);          return $source;      }  }