This article mainly introduces the definition and usage of the AES encryption class implemented in PHP, and analyzes the implementation and usage of the AES encryption class based on PHP in the form of a complete example. Friends in need can refer to the examples in this article
Describes the definition and usage of the AES encryption class implemented by PHP. Share it with everyone for your reference, the details are as follows:
CryptAES.class.php file:
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); } } ?>
Usage:
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);
Note:This needs to be enabled in php.ini:extension=php_mcrypt.dll
PS: Friends who are interested in encryption and decryption can also refer to the online tools of this site:
Text online encryption and decryption tool ( Including AES, DES, RC4, etc.):
http://tools.jb51.net/password/txt_encode
MD5 online encryption tool:
http://tools.jb51.net/password/CreateMD5Password
Online hashing/hash algorithm encryption tool:
http://tools.jb51.net/password/hash_encrypt
Online MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3 /RIPEMD-160 encryption tool:
http://tools.jb51.net/password/hash_md5_sha
Online sha1/sha224/sha256/sha384/ sha512 encryption tool:
http://tools.jb51.net/password/sha_encode
PHP tips for preventing cross-site and xss attack code
How to install yaf extension on Ubuntu PHP example
thinkphp3.2.0 setInc method source code comprehensive analysis of php examples
The above is the detailed content of AES encryption class definition and usage examples implemented by PHP PHP skills. For more information, please follow other related articles on the PHP Chinese website!