栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

PHP AES对称加密算法

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP AES对称加密算法

利用php加密库 mcrypt 进行AES加密解密
//AES加密类class AESMcrypt {   public $iv = null; //秘钥向量
   public $key = null; //加密key
   public $bit = 128;   public $mode= null;//加密模式
   private $cipher;   public function __construct($bit, $key, $iv, $mode) {       if(empty($bit) || empty($key) || empty($iv) || empty($mode)){           return NULL;
       }       $this->bit = $bit;       $this->key = $key;       $this->iv = $iv;       $this->mode = $mode;       switch($this->bit) {           case 192:$this->cipher = MCRYPT_RIJNDAEL_192; break;           case 256:$this->cipher = MCRYPT_RIJNDAEL_256; break;           default: $this->cipher = MCRYPT_RIJNDAEL_128;
       } 

       switch($this->mode) {           case 'ecb':$this->mode = MCRYPT_MODE_ECB; break;           case 'cfb':$this->mode = MCRYPT_MODE_CFB; break;           case 'ofb':$this->mode = MCRYPT_MODE_OFB; break;           case 'nofb':$this->mode = MCRYPT_MODE_NOFB; break;           case 'cbc':$this->mode = MCRYPT_MODE_CBC; break;           default: $this->mode = MCRYPT_MODE_CBC;
       }
   }   public function encrypt($data) {
       $data = base64_encode(mcrypt_encrypt( $this->cipher, $this->key, $data, $this->mode, $this->iv));       return $data;
   }   public function decrypt($data) {
       $data = mcrypt_decrypt( $this->cipher, $this->key, base64_decode($data), $this->mode, $this->iv);
       $data = rtrim(rtrim($data), "x00..x1F");       return $data;
   }
}
在ThinkPHP3.2中的使用方法

把加密类放在第三方类库目录中


image.png

在公共函数中调用
function encrypt($str){
    Vendor('AES.AESMcrypt');
    $config = C('AES');
    $bit = $config['bit'];
    $key = $config['key'];
    $iv = $config['iv'];
    $mode = $config['mode'];
    $aes = new AESMcrypt($bit, $key, $iv,$mode);
    $str = $aes->encrypt($str);    return $str;
}function decrypt($str){
    Vendor('AES.AESMcrypt');
    $config = C('AES');//config中的配置
    $bit = $config['bit'];
    $key = $config['key'];
    $iv = $config['iv'];
    $mode = $config['mode'];
    $aes = new AESMcrypt($bit, $key, $iv,$mode);
    $str = $aes->decrypt($str);    return $str;
}
config配置文件
//注意cbc模式key和iv必须是长度为16的字符串'AES' => array(        'bit' => 128,        'key' => 'woshiwangjiewang',//加解密key
        'iv' => 'wangjieshiwowang',//秘钥向量
        'mode' => 'cbc',//加密模式
        ),
接下来就可以在ThinkPHP中的直接调用encrypt()和decrypt()传入字符串进行加密解密了。
encrypt('我是王杰');
加密后// WLnz+cbKlkoI40BD8R4e/Q==decrypt('WLnz+cbKlkoI40BD8R4e/Q==');
解密后
我是王杰
可以用下面的代码来检测系统是否安装了 mcrypt 模块,并查看支持哪些加密算法和模式
$cipher_list = mcrypt_list_algorithms();//mcrypt支持的加密算法列表$mode_list = mcrypt_list_modes(); //mcrypt支持的加密模式列表var_dump($cipher_list);
var_dump($mode_list);
我当前的PHP支持一下算法和模式

image.png



作者:香瓜J
链接:https://www.jianshu.com/p/3e4cacf2f484

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/227462.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号