本文實例講述了php實現的AES加密類定義與用法。分享給大家供大家參考,具體如下:
CryptAES.html' target='_blank'>class.php文件:
?phpclass 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- 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- 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
PS:關于加密解密感興趣的朋友還可以參考本站在線工具:
文字在線加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode
MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password
在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha
在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode
PHP實現的防止跨站和xss攻擊代碼php技巧
Ubuntu上安裝yaf擴展的方法php實例
thinkphp3.2.0 setInc方法 源碼全面解析php實例
以上就是php實現的AES加密類定義與用法示例php技巧的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答