PHP菜鸟博客_共同学习分享PHP技术心得【PHP爱好者】
PHP实现AES对称加密
2021-4-30 菜鸟站长


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 );







发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容