sql方式:
以手机号示例:
ub:表别名 前三后四格式
REPLACE (ub.phone, SUBSTR( ub.phone, 4, 4 ), '****' ) AS phone,
my batis pils方式:
先试用分页构造器查询出数据,然后循环去除进行脱敏(适合数据量小的时候使用,当数据量大时查询速度较慢)
条件构造器链接:https://baomidou.com/pages/10c804/
LambdaQueryWrapper<实体类> wrapper = new LambdaQueryWrapper<实体类>()
分页方法链接:https://baomidou.com/pages/97710a/#paginationinnerinterceptor
Page<实体类> page = usrPayItemService.page(new Page(req.getPage(), req.getPageSize()), wrapper); PageRsp<实体类> pageRsp = new PageRsp<>(page.getRecords(), page.getTotal());
脱敏工具类:
package com.sports.core.utils; public class SportsEncryptionUtils { /** * 手机号码前三后四脱敏 * 脱敏规则:保留前三后四 */ public static String mobileEncrypt(String mobile) { if (StringUtils.isEmpty(mobile) || (mobile.length() != 11)) { return mobile; } return mobile.replaceAll("(\\w{3})\\w*(\\w{4})", "$1****$2"); } /** * 功能描述:姓名脱敏 * 脱敏规则:只显示第一个汉字 */ public static String nameEncrypt(String fullName) { if (StringUtils.isNotBlank(fullName)) { String name = StringUtils.left(fullName, 1); return StringUtils.rightPad(name, StringUtils.length(fullName), "*"); } return fullName; } /** * 功能描述:身份证号脱敏 * 脱敏规则:保留前六后三 */ public static String idNumberEncrypt(String idNumber) { if (StringUtils.isNotBlank(idNumber)) { return StringUtils.left(idNumber, 6).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(idNumber, 3), StringUtils.length(idNumber), "*"), "******")); } return idNumber; } /** * 功能描述:地址脱敏 * 脱敏规则:从第四位开始隐藏,隐藏至最后两位 */ public static String addressEncrypt(String address) { if (StringUtils.isNotBlank(address)) { return StringUtils.left(address, 3).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(address, address.length() - 11), StringUtils.length(address), "*"), "***")); } return address; } }
脱敏方法:
for (UsrBaseDO pageRecord : pageRecords) { String encryptPhone = SportsEncryptionUtils.mobileEncrypt(pageRecord.getPhone()); pageRecord.setPhone(encryptPhone); }
标签:return,String,身份证号,idNumber,address,java,StringUtils,脱敏 From: https://www.cnblogs.com/Gengzh/p/16912330.html