由于php 7.1以上的版本不再支持mcrypt模块,所以对敏感信息进行3DES加密时无法再使用mcrypt*相关函数。而是用openssl_encrypt函数代替
class 3des{
public function encrypt($str,$key){
$str = self::pkcs5_pad($str, 8);
if (strlen($str) % 8) {
$str = str_pad($str,strlen($str) + 8 - strlen($str) % 8, "\0");
}
$sign = openssl_encrypt ($str, 'DES-EDE3' ,$key,OPENSSL_RAW_DATA | OPENSSL_NO_PADDING ,'');
return base64_encode($sign);
}
private static function pkcs5_pad($text, $blocksize) {
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}
}
openssl_encrypt ( $data , $method , $key [, $options = 0 [, $iv = "" ]] )
参数说明:
$data string 需要加密的字符串
$method string 加密方法(DES-ECB、DES-CBC、DES-CTR、DES-OFB、DES-CFB)
$key string 加密密钥
$options int 0:自动填充,返回的数据经过base64编码;1:自动填充,返回数据未经bas