之前的项目用的3des是基于mcrypt_xxxx的,一上到php7就挂掉。
php7及之后已经正式舍弃这个加密扩展,在写新项目基于php7的,所以指定的3des加密就用OpenSSL实现。
网上我是没找到现成的,所以改动下得到下面的代码:
<?php
class OpenSSL3DES
{
/*密钥,22个字符*/
const KEY='www.csdn.net@@@hyz8970';
/*向量,8个或10个字符*/
const IV='@hyz8970';
/**
* 加密
* @param boolean $status 是否加密
* @return string 处理过的数据
*/
public static function encrypt($data,$status=false){
if ($status){
return base64_encode(openssl_encrypt($data, 'des-ede3-cbc', self::KEY, OPENSSL_RAW_DATA, self::IV));
}
return $data;
}
/**
* 解密
* @return string 加密的字符串不是完整的会返回空字符串值
*/
public static function decrypt($data,$status=false){
if ($status){
return openssl_decrypt(base64_decode($data), 'des-ede3-cbc', self::KEY, OPEN