1.mcrypt 函数php的7以上已经废弃该方法,所以这里的aes是基于openssl_encrypt实现。代码如下
class Aes
{
public $key = '';
public $iv = '';
public function __construct( $config )
{
foreach ( $config as $k => $v ) {
$this->$k = $v;
}
}
//加密
public function aesEn( $data ) {
return base64_encode( openssl_encrypt( $data, $this->method, $this->key, OPENSSL_RAW_DATA, $this->iv ) );
}
//解密
public function aesDe( $data ) {
return openssl_decrypt( base64_decode( $data ), $this->method, $this->key, OPENSSL_RAW_DATA, $this->iv );
}
}
$config = [
'key' => 'mkeymkeymkeymkey', //加密key
'iv' => str_repeat("\0", 16),//保证偏移量为16位,这里是16位空字符串,也可以和key一样16字符串,还可以是变化的,比如md5成16位原文,substr(md5("haha"),8,16),变化的需要保证同一个字符串加解密的iv保持一致。
'method' => 'AES-128-CBC' //加密方式 # AES-256-CBC等
];
//openssl_encrypt的第四个参数为1或者OPENSSL_RAW_DATA时填充方式为pks5padding或者pks7padding的结果一样,其他参数值待验证
$obj = new Aes( $config );
//加密数据
$res = $obj->aesEn( 'haha' );
echo $res;
echo '<hr>';
//解密
echo $obj->aesDe( $res );