PHP实现AES对称加密

  • 内容
  • 评论
  • 相关

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


本文标签:

版权声明:若无特殊注明,本文皆为《菜鸟站长》原创,转载请保留文章出处。

本文链接:PHP实现AES对称加密 - https://www.wlphp.com/?post=267

发表评论

电子邮件地址不会被公开。 必填项已用*标注

福利广告