当前位置:首页 > PHP教程 > php类库 > 列表

标准PHP的AES加密算法类

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-16 10:49:30 浏览: 评论:0 

AES是分组密钥,算法输入128位数据,密钥长度也是128位。用Nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表1所列),每一轮都需要一个与输入分组具有相同长度的扩展密钥Expandedkey(i)的参与。

分享一个标准PHP的AES加密算法类,其中mcrypt_get_block_size('rijndael-128', 'ecb');,如果在不明白原理的情况下比较容易搞错,可以通过mcrypt_list_algorithms函数查看你需要的加密算法标识,代码如下:

  1. <?php 
  2. /** 
  3.  * AES128加解密类 
  4.  * @author dy 
  5.  * 
  6.  */ 
  7. defined('InEjbuy'or exit('Access Invalid!'); 
  8. class Aes{ 
  9.     //密钥 
  10.     private $_secrect_key
  11.     public function __construct(){ 
  12.         $this->_secrect_key = 'MYgGnQE2jDFADSFFDSEWsdD'
  13.     } 
  14.     /** 
  15.      * 加密方法 
  16.      * @param string $str 
  17.      * @return string 
  18.      */ 
  19.     public function encrypt($str){ 
  20.         //AES, 128 ECB模式加密数据 
  21.         $screct_key = $this->_secrect_key; 
  22.         $screct_key = base64_decode($screct_key); 
  23.         $str = trim($str); 
  24.         $str = $this->addPKCS7Padding($str); 
  25.         $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_RAND); 
  26.         $encrypt_str =  mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $screct_key$str, MCRYPT_MODE_ECB, $iv); 
  27.         return base64_encode($encrypt_str); 
  28.     } 
  29.     /** 
  30.      * 解密方法 
  31.      * @param string $str 
  32.      * @return string 
  33.      */ 
  34.     public function decrypt($str){ 
  35.         //AES, 128 ECB模式加密数据 
  36.         $screct_key = $this->_secrect_key; 
  37.         $str = base64_decode($str); 
  38.         $screct_key = base64_decode($screct_key); 
  39.         $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_RAND); 
  40.         $encrypt_str =  mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $screct_key$str, MCRYPT_MODE_ECB, $iv); 
  41.         $encrypt_str = trim($encrypt_str); 
  42.         $encrypt_str = $this->stripPKSC7Padding($encrypt_str); 
  43.         return $encrypt_str
  44.     } 
  45.     /** 
  46.      * 填充算法 
  47.      * @param string $source 
  48.      * @return string 
  49.      */ 
  50.     function addPKCS7Padding($source){ 
  51.         $source = trim($source); 
  52.         $block = mcrypt_get_block_size('rijndael-128''ecb'); 
  53.         $pad = $block - (strlen($source) % $block); 
  54.         if ($pad <= $block) { 
  55.             $char = chr($pad); 
  56.             $source .= str_repeat($char$pad); 
  57.         } 
  58.         return $source
  59.     } 
  60.     /** 
  61.      * 移去填充算法 
  62.      * @param string $source 
  63.      * @return string 
  64.      */ 
  65.     function stripPKSC7Padding($source){ 
  66.         $source = trim($source); 
  67.         $char = substr($source, -1); 
  68.         $num = ord($char); 
  69.         if($num==62)return $source
  70.         $source = substr($source,0,-$num); 
  71.         return $source
  72.     } 

以上就是本文所述的全部内容了,希望对大家学习php的AES加密算法类有所帮助。

Tags: AES加密算法类

分享到: