• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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

    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相关内容感兴趣的读者可查看本站专题:《php加密方法总结》、《PHP编码与转码操作技巧汇总》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《php正则表达式用法总结》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • PHP的AES加密算法完整实例
    • PHP实现AES256加密算法实例
    • PHP对称加密算法(DES/AES)类的实现代码
    • 标准PHP的AES加密算法类
    • php中AES加密解密的例子小结
    • PHP实现的AES双向加密解密功能示例【128位】
    • PHP7.1实现的AES与RSA加密操作示例
    • PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
    • PHP扩展mcrypt实现的AES加密功能示例
    • PHP实现的AES 128位加密算法示例
    上一篇:php 判断IP为有效IP地址的方法
    下一篇:PHP实现的防止跨站和xss攻击代码【来自阿里云】
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    php实现的AES加密类定义与用法示例 php,实现,的,AES,加密,类,