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