public static function encrypt($value, $key, $expire = 0, $target = 'url')
{
// 随机生成初始化向量, 增加密文随机性
$iv = static::createIV(self::IV_SIZE);
// 序列化待加密的数据(支持数组或对象的加密)
$value = static::packing($value);
// 加密数据
$value = openssl_encrypt($value, self::CIPHER_MODE, $key, OPENSSL_RAW_DATA, $iv);
if ($value === false) {
return false;
}
// 加密有效期
$expire = $expire ? dechex(time() + $expire) : 0;
$expire = sprintf('%08s', $expire);
// 生成密文校验码
$hmac = static::hmac($iv, $value, $key);
// 组合加密结果并base64编码
return Base64::encode(pack('H*', $hmac . $expire) . $iv . $value, $target);
}而 ba public function encode($data, $target = '')
{
// 当函数没有特别指定编码目标时, 使用类自身编码目标
if (empty($target)) {
$target = self::$target;
}
// 进行一次原始编码
$data = base64_encode($data);
// 根据编码目标替换字符
switch ($target) {
case 'url':
$data = str_replace(['+', '/', '='], ['-', '_', ''], $data);
break;
case 'regex':
$data = str_replace(['+', '/', '='], ['!', '-', ''], $data);
break;
case 'default':
default:
break;
}
// 返回编码结果
return $data;
}使用报错[2048] ErrorException in Crypt.php line 107
Non-static method org\transform\driver\Base64::encode() should not be called statically 最佳答案