您好,欢迎访问一九零五行业门户网

php实现AES加密类实现步骤详解

这次给大家带来php实现aes加密类实现步骤详解,php实现aes加密类的注意事项有哪些,下面就是实战案例,一起来看一下。
cryptaes.class.php文件:
<?php class cryptaes { protected $cipher = mcrypt_rijndael_128; protected $mode = mcrypt_mode_ecb; protected $pad_method = null; protected $secret_key = ''; protected $iv = ''; public function set_cipher($cipher) { $this->cipher = $cipher;  }  public function set_mode($mode)  {  $this->mode = $mode;  }  public function set_iv($iv)  {  $this->iv = $iv;  }  public function set_key($key)  {  $this->secret_key = $key;  }  public function require_pkcs5()  {  $this->pad_method = 'pkcs5';  }  protected function pad_or_unpad($str, $ext)  {  if ( is_null($this->pad_method) )  {   return $str;  }  else  {   $func_name = class . '::' . $this->pad_method . '_' . $ext . 'pad';   if ( is_callable($func_name) )   {   $size = mcrypt_get_block_size($this->cipher, $this->mode);   return call_user_func($func_name, $str, $size);   }  }  return $str;  }  protected function pad($str)  {  return $this->pad_or_unpad($str, '');  }  protected function unpad($str)  {  return $this->pad_or_unpad($str, 'un');  }  public function encrypt($str)  {  $str = $this->pad($str);  $td = mcrypt_module_open($this->cipher, '', $this->mode, '');  if ( empty($this->iv) )  {   $iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), mcrypt_rand);  }  else  {   $iv = $this->iv;  }  mcrypt_generic_init($td, $this->secret_key, $iv);  $cyper_text = mcrypt_generic($td, $str);  //$rt=base64_encode($cyper_text);  $rt = bin2hex($cyper_text);  mcrypt_generic_deinit($td);  mcrypt_module_close($td);  return $rt;  }  public function decrypt($str){  $td = mcrypt_module_open($this->cipher, '', $this->mode, '');  if ( empty($this->iv) )  {   $iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), mcrypt_rand);  }  else  {   $iv = $this->iv;  }  mcrypt_generic_init($td, $this->secret_key, $iv);  $decrypted_text = mdecrypt_generic($td, self::hex2bin($str));  //$decrypted_text = mdecrypt_generic($td, base64_decode($str));  $rt = $decrypted_text;  mcrypt_generic_deinit($td);  mcrypt_module_close($td);  return $this->unpad($rt);  }  public static function hex2bin($hexdata) {  $bindata = '';  $length = strlen($hexdata);  for ($i=0; $i < $length; $i += 2) { $bindata .= chr(hexdec(substr($hexdata, $i, 2))); } return $bindata; } public static function pkcs5_pad($text, $blocksize) { $pad = $blocksize - (strlen($text) % $blocksize); return $text . str_repeat(chr($pad), $pad); } public static function pkcs5_unpad($text) { $pad = ord($text{strlen($text) - 1}); if ($pad > strlen($text)) return false;  if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false;  return substr($text, 0, -1 * $pad);  } } ?>
用法:
require_once(cryptaes.class.php); $keystr = 'ss4fs4skfhksk'; $aes = new cryptaes(); $keystr = $aes->hex2bin($keystr); $aes->set_key($keystr); $aes->require_pkcs5(); $d = $aes->encrypt($data);
注:这里需要在php.ini中开启:extension=php_mcrypt.dll
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
php如何操作可以记录访客浏览信息
laravel orm开启created_at步骤总结
以上就是php实现aes加密类实现步骤详解的详细内容。
其它类似信息

推荐信息