最近公司项目需要用php对数据进行3des加密,输入输出为十六进制。网上的方法大部分都是基于mcrypt扩展库,php7开始已经废弃,所以使用openssl扩展进行加密。贴上代码记录一下,ECB模式:
class ThreeDesUtil
{
private static $Algorithm = 'DES-EDE3';//定义加密算法
/**
* 创建密钥,长度为24字节
* @param $key
* @return bool/string
*/
static function createKeyBytes($key){
$dest='';
$temp=self::hexStringToBytes($key);
try{
if(strlen($temp)<24){
$dest=substr($temp,0,strlen($temp));
$dest.=substr($temp,0,24-strlen($temp));
}
}catch (Exception $exception){
$exception->getTrace();
}
return $dest;
}
/**
* 加密,ecb模式
* @param $key 密钥
* @param $src 被加密的数据缓冲区(明文) 十六进制
* @return null|string 加密后的密文 十六进制
*/
public static function encryptMode($k