aes加密php源码,AES加解密类源码 · ThinkPHP5高阶实战教程 --诠释为API开发而生 · 看云...

# AES加解密类源码

> 根据网络整理

~~~

/**

* Created by PhpStorm.

* Power by Mikkle

* QQ:776329498

* Date: 2017/7/3

* Time: 20:48

*/

namespace app\base\controller;

class AES

{

/**

* AES加密、解密类

* 用法:

*

 
 

* // 实例化类

* // 参数$_bit:格式,支持256、192、128,默认为128字节的

* // 参数$_type:加密/解密方式,支持cfb、cbc、nofb、ofb、stream、ecb,默认为ecb

* // 参数$_key:密钥,默认为 _Mikkle_AES_Key_

* $tcaes = new TCAES();

* $string = 'laohu';

* // 加密

* $encodeString = $tcaes->encode($string);

* // 解密

* $decodeString = $tcaes->decode($encodeString);

*

*/

private $_bit = MCRYPT_RIJNDAEL_256;

private $_type = MCRYPT_MODE_CBC;

private $_key = '_Mikkle_AES_Key_'; // 密钥 必须16位 24位

private $_use_base64 = true;

private $_iv_size = null;

private $_iv = null;

/**

* @param string $_key 密钥

* @param int $_bit 默认使用128字节

* @param string $_type 加密解密方式

* @param boolean $_use_base64 默认使用base64二次加密

*/

public function __construct($_key = '', $_bit = 128, $_type = 'ecb', $_use_base64 = true){

// 加密字节

if(192 === $_bit){

$this->_bit = MCRYPT_RIJNDAEL_192;

}elseif(128 === $_bit){

$this->_bit = MCRYPT_RIJNDAEL_128;

}else{

$this->_bit = MCRYPT_RIJNDAEL_256;

}

// 加密方法

if('cfb' === $_type){

$this->_type = MCRYPT_MODE_CFB;

}elseif('cbc' === $_type){

$this->_type = MCRYPT_MODE_CBC;

}elseif('nofb' === $_type){

$this->_type = MCRYPT_MODE_NOFB;

}elseif('ofb' === $_type){

$this->_type = MCRYPT_MODE_OFB;

}elseif('stream' === $_type){

$this->_type = MCRYPT_MODE_STREAM;

}else{

$this->_type = MCRYPT_MODE_ECB;

}

// 密钥

if(!empty($_key)){

$this->_key = $_key;

}

// 是否使用base64

$this->_use_base64 = $_use_base64;

$this->_iv_size = mcrypt_get_iv_size($this->_bit, $this->_type);

$this->_iv = mcrypt_create_iv($this->_iv_size, MCRYPT_RAND);

}

/**

* 加密

* @param string $string 待加密字符串

* @return string

*/

public function encode($string){

//

if(MCRYPT_MODE_ECB === $this->_type){

$encodeString = mcrypt_encrypt($this->_bit, $this->_key, $string, $this->_type);

}else{

$encodeString = mcrypt_encrypt($this->_bit, $this->_key, $string, $this->_type, $this->_iv);

}

if($this->_use_base64){

$encodeString = base64_encode($encodeString);

}

return $encodeString;

}

/**

* 解密

* @param string $string 待解密字符串

* @return string

*/

public function decode($string){

if($this->_use_base64){

$string = base64_decode($string);

}

if(MCRYPT_MODE_ECB === $this->_type){

$decodeString = mcrypt_decrypt($this->_bit, $this->_key, $string, $this->_type);

}else{

$decodeString = mcrypt_decrypt($this->_bit, $this->_key, $string, $this->_type, $this->_iv);

}

return $decodeString;

}

}

~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值