Commit f0dbb0e5 by yuwei

2.0.0项目初始化

parent a3b00baf
...@@ -77,7 +77,7 @@ public class DataSetController extends BaseController { ...@@ -77,7 +77,7 @@ public class DataSetController extends BaseController {
@ApiImplicitParam(name = "dataSetQuery", value = "查询实体dataSetQuery", required = true, dataTypeClass = DataSetQuery.class) @ApiImplicitParam(name = "dataSetQuery", value = "查询实体dataSetQuery", required = true, dataTypeClass = DataSetQuery.class)
}) })
@GetMapping("/page") @GetMapping("/page")
public R getRolePage(DataSetQuery dataSetQuery) { public R getDataSetPage(DataSetQuery dataSetQuery) {
QueryWrapper<DataSetEntity> queryWrapper = new QueryWrapper<>(); QueryWrapper<DataSetEntity> queryWrapper = new QueryWrapper<>();
IPage<DataSetEntity> page = dataSetService.page(new Page<>(dataSetQuery.getPageNum(), dataSetQuery.getPageSize()), queryWrapper); IPage<DataSetEntity> page = dataSetService.page(new Page<>(dataSetQuery.getPageNum(), dataSetQuery.getPageSize()), queryWrapper);
List<DataSetVo> collect = page.getRecords().stream().map(dataSetMapper::toVO).collect(Collectors.toList()); List<DataSetVo> collect = page.getRecords().stream().map(dataSetMapper::toVO).collect(Collectors.toList());
......
...@@ -73,7 +73,7 @@ public class DataSourceController extends BaseController { ...@@ -73,7 +73,7 @@ public class DataSourceController extends BaseController {
@ApiImplicitParam(name = "dataSourceQuery", value = "查询实体dataSourceQuery", required = true, dataTypeClass = DataSourceQuery.class) @ApiImplicitParam(name = "dataSourceQuery", value = "查询实体dataSourceQuery", required = true, dataTypeClass = DataSourceQuery.class)
}) })
@GetMapping("/page") @GetMapping("/page")
public R getRolePage(DataSourceQuery dataSourceQuery) { public R getDataSourcePage(DataSourceQuery dataSourceQuery) {
QueryWrapper<DataSourceEntity> queryWrapper = new QueryWrapper<>(); QueryWrapper<DataSourceEntity> queryWrapper = new QueryWrapper<>();
IPage<DataSourceEntity> page = dataSourceService.page(new Page<>(dataSourceQuery.getPageNum(), dataSourceQuery.getPageSize()), queryWrapper); IPage<DataSourceEntity> page = dataSourceService.page(new Page<>(dataSourceQuery.getPageNum(), dataSourceQuery.getPageSize()), queryWrapper);
List<DataSourceVo> collect = page.getRecords().stream().map(dataSourceMapper::toVO).collect(Collectors.toList()); List<DataSourceVo> collect = page.getRecords().stream().map(dataSourceMapper::toVO).collect(Collectors.toList());
......
package cn.datax.service.data.market.api.enums; package cn.datax.service.data.market.api.enums;
public enum AlgorithmCrypt { public enum AlgorithmCrypto {
EMAIL(1, "邮箱"); BASE64(1, "BASE64加密"),
MD5(2, "MD5加密"),
SHA_1(3, "SHA_1加密"),
SHA_256(4, "SHA_256加密"),
AES(5, "AES加密"),
DES(6, "DES加密");
private final Integer key; private final Integer key;
private final String val; private final String val;
AlgorithmCrypt(Integer key, String val) { AlgorithmCrypto(Integer key, String val) {
this.key = key; this.key = key;
this.val = val; this.val = val;
} }
...@@ -21,12 +26,12 @@ public enum AlgorithmCrypt { ...@@ -21,12 +26,12 @@ public enum AlgorithmCrypt {
return val; return val;
} }
public static AlgorithmCrypt getDataType(Integer algorithmCrypt) { public static AlgorithmCrypto getAlgorithmCrypto(Integer algorithmCrypt) {
for (AlgorithmCrypt type : AlgorithmCrypt.values()) { for (AlgorithmCrypto type : AlgorithmCrypto.values()) {
if (type.key == algorithmCrypt) { if (type.key == algorithmCrypt) {
return type; return type;
} }
} }
return EMAIL; return BASE64;
} }
} }
...@@ -22,7 +22,7 @@ public enum CipherType { ...@@ -22,7 +22,7 @@ public enum CipherType {
return val; return val;
} }
public static CipherType getDataType(Integer cipherType) { public static CipherType getCipherType(Integer cipherType) {
for (CipherType type : CipherType.values()) { for (CipherType type : CipherType.values()) {
if (type.key == cipherType) { if (type.key == cipherType) {
return type; return type;
......
package cn.datax.service.data.market.api.enums; package cn.datax.service.data.market.api.enums;
public enum RegexCrypt { public enum RegexCrypto {
MD5(1, "MD5加密"); CHINESE_NAME(1, "中文姓名"),
ID_CARD(2, "身份证号"),
FIXED_PHONE(3, "固定电话"),
MOBILE_PHONE(4, "手机号码"),
ADDRESS(5, "地址"),
EMAIL(6, "电子邮箱"),
BANK_CARD(7, "银行卡号"),
CNAPS_CODE(8, "公司开户银行联号");
private final Integer key; private final Integer key;
private final String val; private final String val;
RegexCrypt(Integer key, String val) { RegexCrypto(Integer key, String val) {
this.key = key; this.key = key;
this.val = val; this.val = val;
} }
...@@ -21,12 +28,12 @@ public enum RegexCrypt { ...@@ -21,12 +28,12 @@ public enum RegexCrypt {
return val; return val;
} }
public static RegexCrypt getDataType(Integer regexCrypt) { public static RegexCrypto getRegexCrypto(Integer regexCrypt) {
for (RegexCrypt type : RegexCrypt.values()) { for (RegexCrypto type : RegexCrypto.values()) {
if (type.key == regexCrypt) { if (type.key == regexCrypt) {
return type; return type;
} }
} }
return MD5; return CHINESE_NAME;
} }
} }
...@@ -69,7 +69,7 @@ public class ApiMaskController extends BaseController { ...@@ -69,7 +69,7 @@ public class ApiMaskController extends BaseController {
@ApiImplicitParam(name = "apiMaskQuery", value = "查询实体apiMaskQuery", required = true, dataTypeClass = ApiMaskQuery.class) @ApiImplicitParam(name = "apiMaskQuery", value = "查询实体apiMaskQuery", required = true, dataTypeClass = ApiMaskQuery.class)
}) })
@GetMapping("/page") @GetMapping("/page")
public R getRolePage(ApiMaskQuery apiMaskQuery) { public R getApiMaskPage(ApiMaskQuery apiMaskQuery) {
QueryWrapper<ApiMaskEntity> queryWrapper = new QueryWrapper<>(); QueryWrapper<ApiMaskEntity> queryWrapper = new QueryWrapper<>();
IPage<ApiMaskEntity> page = apiMaskService.page(new Page<>(apiMaskQuery.getPageNum(), apiMaskQuery.getPageSize()), queryWrapper); IPage<ApiMaskEntity> page = apiMaskService.page(new Page<>(apiMaskQuery.getPageNum(), apiMaskQuery.getPageSize()), queryWrapper);
List<ApiMaskVo> collect = page.getRecords().stream().map(apiMaskMapper::toVO).collect(Collectors.toList()); List<ApiMaskVo> collect = page.getRecords().stream().map(apiMaskMapper::toVO).collect(Collectors.toList());
...@@ -85,7 +85,7 @@ public class ApiMaskController extends BaseController { ...@@ -85,7 +85,7 @@ public class ApiMaskController extends BaseController {
@ApiOperation(value = "添加信息", notes = "根据apiMask对象添加信息") @ApiOperation(value = "添加信息", notes = "根据apiMask对象添加信息")
@ApiImplicitParam(name = "apiMask", value = "详细实体apiMask", required = true, dataType = "ApiMaskDto") @ApiImplicitParam(name = "apiMask", value = "详细实体apiMask", required = true, dataType = "ApiMaskDto")
@PostMapping() @PostMapping()
public R saveDataApiMask(@RequestBody @Validated({ValidationGroups.Insert.class}) ApiMaskDto apiMask) { public R saveApiMask(@RequestBody @Validated({ValidationGroups.Insert.class}) ApiMaskDto apiMask) {
apiMaskService.saveApiMask(apiMask); apiMaskService.saveApiMask(apiMask);
return R.ok(); return R.ok();
} }
......
package cn.datax.service.data.market.data.masking.factory;
import cn.datax.service.data.market.data.masking.factory.crypto.Crypto;
public abstract class AbstractFactory {
public abstract Crypto getAlgorithm(Integer type);
public abstract Crypto getRegex(Integer type);
}
package cn.datax.service.data.market.data.masking.factory;
import cn.datax.service.data.market.api.enums.AlgorithmCrypto;
import cn.datax.service.data.market.data.masking.factory.crypto.AlgorithmRegistry;
import cn.datax.service.data.market.data.masking.factory.crypto.Crypto;
public class AlgorithmFactory extends AbstractFactory {
private static final AlgorithmRegistry ALGORITHM_REGISTRY = new AlgorithmRegistry();
@Override
public Crypto getAlgorithm(Integer type) {
AlgorithmCrypto crypto = AlgorithmCrypto.getAlgorithmCrypto(type);
return ALGORITHM_REGISTRY.getAlgorithm(crypto);
}
@Override
public Crypto getRegex(Integer type) {
return null;
}
}
package cn.datax.service.data.market.data.masking.factory;
import cn.datax.service.data.market.api.enums.CipherType;
public class FactoryProducer {
public static AbstractFactory getFactory(Integer type){
CipherType cipherType = CipherType.getCipherType(type);
switch (cipherType) {
case REGEX:
return new RegexFactory();
case ALGORITHM:
return new AlgorithmFactory();
}
return null;
}
}
package cn.datax.service.data.market.data.masking.factory;
import cn.datax.service.data.market.api.enums.RegexCrypto;
import cn.datax.service.data.market.data.masking.factory.crypto.Crypto;
import cn.datax.service.data.market.data.masking.factory.crypto.RegexRegistry;
public class RegexFactory extends AbstractFactory {
private static final RegexRegistry REGEX_REGISTRY = new RegexRegistry();
@Override
public Crypto getAlgorithm(Integer type) {
return null;
}
@Override
public Crypto getRegex(Integer type) {
RegexCrypto crypto = RegexCrypto.getRegexCrypto(type);
return REGEX_REGISTRY.getRegex(crypto);
}
}
package cn.datax.service.data.market.data.masking.factory.crypto;
import org.apache.commons.lang3.StringUtils;
/**
* [地址] 只显示前六位,不显示详细地址;我们要对个人信息增强保护<例子:北京市海淀区****>
*/
public class ADDRESSCrypto implements Crypto {
@Override
public String encrypt(String content) {
if (StringUtils.isBlank(content)) {
return null;
}
return StringUtils.rightPad(StringUtils.left(content, 6), StringUtils.length(content), "*");
}
@Override
public String decrypt(String content) {
return null;
}
}
package cn.datax.service.data.market.data.masking.factory.crypto;
import org.apache.commons.lang3.StringUtils;
import javax.crypto.*;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.security.SecureRandom;
import java.util.Base64;
public class AESCrypto implements Crypto {
@Override
public String encrypt(String content) {
if (StringUtils.isBlank(content)) {
return null;
}
try {
//1.构造密钥生成器,指定为AES算法,不区分大小写
KeyGenerator kGen = KeyGenerator.getInstance("AES");
//2.根据 RULES 规则初始化密钥生成器,根据传入的字节数组生成一个128位的随机源
kGen.init(128, new SecureRandom(SLAT.getBytes(CHARSET_UTF8)));
//3.产生原始对称密钥
SecretKey secretKey = kGen.generateKey();
//4.获得原始对称密钥的字节数组
byte[] enCodeFormat = secretKey.getEncoded();
//5.根据字节数组生成AES密钥
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
//6.根据指定算法AES生成密码器
javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("AES");
//7.初始化密码器,第一个参数为加密(Encrypt_mode)或者解密解密(Decrypt_mode)操作,第二个参数为使用的KEY
cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, key);
//8.根据密码器的初始化方式--加密:将数据加密
byte[] AES_encrypt = cipher.doFinal(content.getBytes(CHARSET_UTF8));
//9.将字符串返回
return Base64.getEncoder().encodeToString(AES_encrypt);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
public String decrypt(String content) {
if (StringUtils.isBlank(content)) {
return null;
}
try {
//1.构造密钥生成器,指定为AES算法,不区分大小写
KeyGenerator kGen = KeyGenerator.getInstance("AES");
//2.根据 RULES 规则初始化密钥生成器,根据传入的字节数组生成一个128位的随机源
kGen.init(128, new SecureRandom(SLAT.getBytes(CHARSET_UTF8)));
//3.产生原始对称密钥
SecretKey secretKey = kGen.generateKey();
//4.获得原始对称密钥的字节数组
byte[] enCodeFormat = secretKey.getEncoded();
//5.根据字节数组生成AES密钥
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
//6.根据指定算法AES生成密码器
javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("AES");
//7.初始化密码器,第一个参数为加密(Encrypt_mode)或者解密解密(Decrypt_mode)操作,第二个参数为使用的KEY
cipher.init(Cipher.DECRYPT_MODE, key);// 初始化
//8.根据密码器的初始化方式--加密:将数据加密
byte[] AES_decode = cipher.doFinal(Base64.getDecoder().decode(content));
return new String(AES_decode, CHARSET_UTF8);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
package cn.datax.service.data.market.data.masking.factory.crypto;
import cn.datax.service.data.market.api.enums.AlgorithmCrypto;
import java.util.EnumMap;
import java.util.Map;
public class AlgorithmRegistry {
private final Map<AlgorithmCrypto, Crypto> algorithm_enum_map = new EnumMap<>(AlgorithmCrypto.class);
public AlgorithmRegistry() {
algorithm_enum_map.put(AlgorithmCrypto.BASE64, new BASE64Crypto());
algorithm_enum_map.put(AlgorithmCrypto.AES, new AESCrypto());
algorithm_enum_map.put(AlgorithmCrypto.DES, new DESCrypto());
algorithm_enum_map.put(AlgorithmCrypto.MD5, new MD5Crypto());
algorithm_enum_map.put(AlgorithmCrypto.SHA_1, new SHA1Crypto());
algorithm_enum_map.put(AlgorithmCrypto.SHA_256, new SHA256Crypto());
}
public Crypto getAlgorithm(AlgorithmCrypto crypto) {
return algorithm_enum_map.get(crypto);
}
}
package cn.datax.service.data.market.data.masking.factory.crypto;
import org.apache.commons.lang3.StringUtils;
/**
* [银行卡号] 前六位,后四位,其他用星号隐藏每位1个星号<例子:6222600**********1234>
*/
public class BANKCARDCrypto implements Crypto {
@Override
public String encrypt(String content) {
if (StringUtils.isBlank(content)) {
return null;
}
return StringUtils.left(content, 6).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(content, 4), StringUtils.length(content), "*"), "******"));
}
@Override
public String decrypt(String content) {
return null;
}
}
package cn.datax.service.data.market.data.masking.factory.crypto;
import org.apache.commons.lang3.StringUtils;
import java.util.Base64;
public class BASE64Crypto implements Crypto {
@Override
public String encrypt(String content) {
if (StringUtils.isBlank(content)) {
return null;
}
try {
byte[] encode = Base64.getEncoder().encode(content.getBytes(CHARSET_UTF8));
return new String(encode, CHARSET_UTF8);
} catch (Exception e) {
}
return null;
}
@Override
public String decrypt(String content) {
if (StringUtils.isBlank(content)) {
return null;
}
try {
byte[] decode = Base64.getDecoder().decode(content.getBytes(CHARSET_UTF8));
return new String(decode, CHARSET_UTF8);
} catch (Exception e) {
}
return null;
}
}
package cn.datax.service.data.market.data.masking.factory.crypto;
import org.apache.commons.lang3.StringUtils;
/**
* [中文姓名] 只显示第一个汉字,其他隐藏为星号<例子:李**>
*/
public class CHINESENAMECrypto implements Crypto {
@Override
public String encrypt(String content) {
if (StringUtils.isBlank(content)) {
return null;
}
return StringUtils.rightPad(StringUtils.left(content, 1), StringUtils.length(content), "*");
}
@Override
public String decrypt(String content) {
return null;
}
}
package cn.datax.service.data.market.data.masking.factory.crypto;
import org.apache.commons.lang3.StringUtils;
/**
* [公司开户银行联号] 公司开户银行联行号,显示前四位,其他用星号隐藏,每位1个星号<例子:1234********>
*/
public class CNAPSCODECrypto implements Crypto {
@Override
public String encrypt(String content) {
if (StringUtils.isBlank(content)) {
return null;
}
return StringUtils.rightPad(StringUtils.left(content, 4), StringUtils.length(content), "*");
}
@Override
public String decrypt(String content) {
return null;
}
}
package cn.datax.service.data.market.data.masking.factory.crypto;
public interface Crypto {
/**
* 字符编码
*/
String CHARSET_UTF8 = "UTF-8";
/**
* 密码盐
*/
String SLAT = "DATAX:20200101";
String encrypt(String content);
String decrypt(String content);
}
package cn.datax.service.data.market.data.masking.factory.crypto;
import org.apache.commons.lang3.StringUtils;
import javax.crypto.*;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.security.SecureRandom;
import java.util.Base64;
public class DESCrypto implements Crypto {
@Override
public String encrypt(String content) {
if (StringUtils.isBlank(content)) {
return null;
}
try {
KeyGenerator kGen = KeyGenerator.getInstance("DES");
kGen.init(56, new SecureRandom(SLAT.getBytes(CHARSET_UTF8)));
SecretKey secretKey = kGen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "DES");
javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("DES");
cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, key);
byte[] DES_encrypt = cipher.doFinal(content.getBytes(CHARSET_UTF8));
return Base64.getEncoder().encodeToString(DES_encrypt);
} catch (Exception e) {
}
return null;
}
@Override
public String decrypt(String content) {
if (StringUtils.isBlank(content)) {
return null;
}
try {
KeyGenerator kGen = KeyGenerator.getInstance("DES");
kGen.init(56, new SecureRandom(SLAT.getBytes(CHARSET_UTF8)));
SecretKey secretKey = kGen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "DES");
javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] DES_decrypt = cipher.doFinal(Base64.getDecoder().decode(content));
return new String(DES_decrypt, CHARSET_UTF8);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
package cn.datax.service.data.market.data.masking.factory.crypto;
import org.apache.commons.lang3.StringUtils;
/**
* [电子邮箱] 只显示前三后显示邮箱后缀,其他隐藏为星号<例子:312****@qq.com>
*/
public class EMAILCrypto implements Crypto {
@Override
public String encrypt(String content) {
if (StringUtils.isBlank(content)) {
return null;
}
return content.replaceAll("(\\w{3}).*@(\\w+)", "$1****@$2");
}
@Override
public String decrypt(String content) {
return null;
}
}
package cn.datax.service.data.market.data.masking.factory.crypto;
import org.apache.commons.lang3.StringUtils;
/**
* [固定电话] 后四位,其他隐藏<例子:****1234>
*/
public class FIXEDPHONECrypto implements Crypto {
@Override
public String encrypt(String content) {
if (StringUtils.isBlank(content)) {
return null;
}
return StringUtils.leftPad(StringUtils.right(content, 4), StringUtils.length(content), "*");
}
@Override
public String decrypt(String content) {
return null;
}
}
package cn.datax.service.data.market.data.masking.factory.crypto;
import org.apache.commons.lang3.StringUtils;
/**
* [身份证号] 显示最后四位,其他隐藏。共计18位或者15位。<例子:*************5762>
*/
public class IDCARDCrypto implements Crypto {
@Override
public String encrypt(String content) {
if (StringUtils.isBlank(content)) {
return null;
}
return StringUtils.leftPad(StringUtils.right(content, 4), StringUtils.length(content), "*");
}
@Override
public String decrypt(String content) {
return null;
}
}
package cn.datax.service.data.market.data.masking.factory.crypto;
import org.apache.commons.lang3.StringUtils;
import java.security.MessageDigest;
import java.util.Base64;
public class MD5Crypto implements Crypto {
@Override
public String encrypt(String content) {
if (StringUtils.isBlank(content)) {
return null;
}
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("MD5");
md5.update(content.getBytes(CHARSET_UTF8));
md5.update(SLAT.getBytes(CHARSET_UTF8));
} catch (Exception e) {
}
return Base64.getEncoder().encodeToString(md5.digest());
}
@Override
public String decrypt(String content) {
return null;
}
}
package cn.datax.service.data.market.data.masking.factory.crypto;
import org.apache.commons.lang3.StringUtils;
/**
* [手机号码] 前三位,后四位,其他隐藏<例子:138******1234>
*/
public class MOBILEPHONECrypto implements Crypto {
@Override
public String encrypt(String content) {
if (StringUtils.isBlank(content)) {
return null;
}
return StringUtils.left(content, 3).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(content, 4), StringUtils.length(content), "*"), "***"));
}
@Override
public String decrypt(String content) {
return null;
}
}
package cn.datax.service.data.market.data.masking.factory.crypto;
import cn.datax.service.data.market.api.enums.RegexCrypto;
import java.util.EnumMap;
import java.util.Map;
public class RegexRegistry {
private final Map<RegexCrypto, Crypto> regex_enum_map = new EnumMap<>(RegexCrypto.class);
public RegexRegistry() {
regex_enum_map.put(RegexCrypto.CHINESE_NAME, new CHINESENAMECrypto());
regex_enum_map.put(RegexCrypto.ID_CARD, new IDCARDCrypto());
regex_enum_map.put(RegexCrypto.FIXED_PHONE, new FIXEDPHONECrypto());
regex_enum_map.put(RegexCrypto.MOBILE_PHONE, new MOBILEPHONECrypto());
regex_enum_map.put(RegexCrypto.ADDRESS, new ADDRESSCrypto());
regex_enum_map.put(RegexCrypto.EMAIL, new EMAILCrypto());
regex_enum_map.put(RegexCrypto.BANK_CARD, new BANKCARDCrypto());
regex_enum_map.put(RegexCrypto.CNAPS_CODE, new CNAPSCODECrypto());
}
public Crypto getRegex(RegexCrypto crypto) {
return regex_enum_map.get(crypto);
}
}
package cn.datax.service.data.market.data.masking.factory.crypto;
import org.apache.commons.lang3.StringUtils;
import java.security.MessageDigest;
import java.util.Base64;
public class SHA1Crypto implements Crypto {
@Override
public String encrypt(String content) {
if (StringUtils.isBlank(content)) {
return null;
}
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("SHA-1");
md5.update(content.getBytes(CHARSET_UTF8));
md5.update(SLAT.getBytes(CHARSET_UTF8));
} catch (Exception e) {
}
return Base64.getEncoder().encodeToString(md5.digest());
}
@Override
public String decrypt(String content) {
return null;
}
}
package cn.datax.service.data.market.data.masking.factory.crypto;
import org.apache.commons.lang3.StringUtils;
import java.security.MessageDigest;
import java.util.Base64;
public class SHA256Crypto implements Crypto {
@Override
public String encrypt(String content) {
if (StringUtils.isBlank(content)) {
return null;
}
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("SHA-256");
md5.update(content.getBytes(CHARSET_UTF8));
md5.update(SLAT.getBytes(CHARSET_UTF8));
} catch (Exception e) {
}
return Base64.getEncoder().encodeToString(md5.digest());
}
@Override
public String decrypt(String content) {
return null;
}
}
package cn.datax.service.data.market.data.masking.utils;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
public class ParsedSql implements Serializable {
private static final long serialVersionUID=1L;
public static void main(String[] args) {
/**
* 显示前三后四,其他隐藏为星号<例子:187****2488>
*/
String phone = "18771632488";
System.out.println(phone.replaceAll("(\\d{3}).*(\\d{4})","$1****$2"));
/**
* 显示前三后四,其他隐藏为星号<例子:421****464X>
*/
String idCard = "421302199208165464X";
System.out.println(idCard.replaceAll("(\\d{3}).*(\\w{4})", "$1****$2"));
/**
* 只显示前三后显示邮箱后缀,其他隐藏为星号<例子:312****@qq.com>
*/
String email = "312075478@qq.com";
System.out.println(email.replaceAll("(\\w{3}).*@(\\w+)", "$1****@$2"));
/**
* 只显示第一位,其他隐藏为星号<例子:张**>
*/
String name = "张三";
System.out.println(StringUtils.rightPad(StringUtils.left(name, 1), StringUtils.length(name), "*"));
/**
* 显示最后四位,其他隐藏为星号<例子:*************5762>
*/
String other = "4213021992081655762";
System.out.println(StringUtils.leftPad(StringUtils.right(other, 4), StringUtils.length(other), "*"));
}
}
...@@ -71,7 +71,7 @@ public class DataApiController extends BaseController { ...@@ -71,7 +71,7 @@ public class DataApiController extends BaseController {
@ApiImplicitParam(name = "dataApiQuery", value = "查询实体dataApiQuery", required = true, dataTypeClass = DataApiQuery.class) @ApiImplicitParam(name = "dataApiQuery", value = "查询实体dataApiQuery", required = true, dataTypeClass = DataApiQuery.class)
}) })
@GetMapping("/page") @GetMapping("/page")
public R getRolePage(DataApiQuery dataApiQuery) { public R getDataApiPage(DataApiQuery dataApiQuery) {
QueryWrapper<DataApiEntity> queryWrapper = new QueryWrapper<>(); QueryWrapper<DataApiEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.select("id", "status", "create_time", "api_name", "api_version", "api_url", "req_method", "res_type", "remark"); queryWrapper.select("id", "status", "create_time", "api_name", "api_version", "api_url", "req_method", "res_type", "remark");
IPage<DataApiEntity> page = dataApiService.page(new Page<>(dataApiQuery.getPageNum(), dataApiQuery.getPageSize()), queryWrapper); IPage<DataApiEntity> page = dataApiService.page(new Page<>(dataApiQuery.getPageNum(), dataApiQuery.getPageSize()), queryWrapper);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment