佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > php實(shí)現(xiàn)的AES加密類定義與用法示例

php實(shí)現(xiàn)的AES加密類定義與用法示例

熱門標(biāo)簽:服務(wù)器配置 銀行業(yè)務(wù) Linux服務(wù)器 阿里云 電子圍欄 團(tuán)購網(wǎng)站 Mysql連接數(shù)設(shè)置 科大訊飛語音識別系統(tǒng)

本文實(shí)例講述了php實(shí)現(xiàn)的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

PS:關(guān)于加密解密感興趣的朋友還可以參考本站在線工具:

文字在線加密解密工具(包含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

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php加密方法總結(jié)》、《PHP編碼與轉(zhuǎn)碼操作技巧匯總》、《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計算法總結(jié)》及《php正則表達(dá)式用法總結(jié)》

希望本文所述對大家PHP程序設(shè)計有所幫助。

您可能感興趣的文章:
  • PHP的AES加密算法完整實(shí)例
  • PHP實(shí)現(xiàn)AES256加密算法實(shí)例
  • PHP對稱加密算法(DES/AES)類的實(shí)現(xiàn)代碼
  • 標(biāo)準(zhǔn)PHP的AES加密算法類
  • php中AES加密解密的例子小結(jié)
  • PHP實(shí)現(xiàn)的AES雙向加密解密功能示例【128位】
  • PHP7.1實(shí)現(xiàn)的AES與RSA加密操作示例
  • PHP7實(shí)現(xiàn)和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
  • PHP擴(kuò)展mcrypt實(shí)現(xiàn)的AES加密功能示例
  • PHP實(shí)現(xiàn)的AES 128位加密算法示例

標(biāo)簽:大理 廣元 萍鄉(xiāng) 棗莊 衡水 江蘇 蚌埠 衢州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php實(shí)現(xiàn)的AES加密類定義與用法示例》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    乌鲁木齐市| 宝应县| 焦作市| 图木舒克市| 阳信县| 双桥区| 耒阳市| 元氏县| 舒兰市| 桃园县| 长海县| 郴州市| 塔城市| 独山县| 新乐市| 闸北区| 运城市| 百色市| 望谟县| 灵川县| 临夏县| 任丘市| 太保市| 棋牌| 长汀县| 永城市| 商河县| 洪泽县| 黎城县| 固镇县| 肃宁县| 丹寨县| 扶余县| 龙陵县| 松溪县| 钦州市| 湖口县| 兴义市| 青田县| 临安市| 肥东县|