版权声明:本文为本小白原创文章,(转载请说明出处,标明链接) 文中若有错误,敬请指正! https://blog.csdn.net/qq_32737755/article/details/82498778
看到以前的代码中,加密解密用的mcrypt 比较多,但是mcrypt 扩展已经过时了大约10年,并且用起来很复杂。因此它被废弃并且被 OpenSSL 所取代。 从PHP 7.2起它将被从核心代码中移除并且移到PECL中。
查询openssl支持的对称加密算法,可以用这个函数:openssl_get_cipher_methods(),支持的算法有182种。
加密:openssl_encrypt($data, $method, $passwd, $options, $iv);
参数说明:
$data: 加密明文
$method: 加密方法
$passwd: 加密密钥
$options: 数据格式选项(可选)
$iv: 加密初始化向量(可选)
解密:openssl_decrypt($data, $method, $passwd, $options, $iv);
参数说明:
$data: 解密密文
$method: 解密加密方法
$passwd: 解密密钥
$options: 数据格式选项(可选)
$iv: 解密初始化向量(可选)
实现代码:
$key = $iv = "1478523698563214";
function encrypt($str,$key,$iv){
$str=serialize($str);
$data=openssl_encrypt($str, 'AES-256-CBC',$key,0,$iv);
$encrypt=base64_encode(json_encode($data));
return $encrypt;
}
function decrypt($encrypt,$key,$iv)
{
$encrypt = json_decode(base64_decode($encrypt), true);
$decrypt = openssl_decrypt($encrypt, 'AES-256-CBC', $key, 0, $iv);
$id = unserialize($decrypt);
if($id){
return $id;
}else{
return 0;
}
}
$jiami = encrypt('147852369',$key,$iv);
echo $jiami;
echo '<br>';
echo decrypt($jiami,$key,$iv);
输出结果为:
IkNYUWdPR0grK2hQY3BjSVp2eVQ1UzNmTmhONUtOV0RTajY3ak93WW9PUW89Ig==
147852369