数据库驱动改造加密姓名手机号证件号邮箱敏感信息
首先解压出驱动日志打印输出类
之后进行改造,使用正则表达式对邮箱手机身份证加密
XM_PATTERN等为姓名,名称字段进行加密,使输出的sql对该字段加密
使用类以及核心代码如下
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.util.regex.Matcher;
import java.util.regex.Pattern;{private static final Logger logger = LoggerFactory.getLogger(SpyLog.class);private static final Pattern EMAIL_PATTERN = Pattern.compile("([a-zA-Z0-9_.-])([a-zA-Z0-9_.-]+)(@[a-zA-Z0-9.]+)");private static final Pattern PHONE_PATTERN = Pattern.compile("(1[3456789]\\d)(\\d{4})(\\d{4})");private static final Pattern ID_PATTERN = Pattern.compile("([1-9]\\d{5})(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])(\\d\\d)(\\d)(\\d|X|x)");//private static final Pattern XM_PATTERN = Pattern.compile("(?i)xm='([^']*)'");private static final Pattern MC_PATTERN = Pattern.compile("(?i)mc='([^']*)'");private static final Pattern ZJMC_PATTERN = Pattern.compile("(?i)expertname='([^']*)'");private static final String SQL_STACK_TRACE = "sql stack trace";public SpyLog() {}public static void info(Object obj, String category, Object... info) {if (SpyConfiguration.isCategoryEnabled(category)) {StringBuffer sb = new StringBuffer(category);if (info != null) {Object[] var7 = info;int var6 = info.length;for(int var5 = 0; var5 < var6; ++var5) {Object element = var7[var5];sb.append("|").append(element);}}logger.info(filter(sb.toString()));if (SpyConfiguration.isStackTraceEnabled()) {logger.error("Stack trace", new Exception("Stack trace"));}}}public static void error(String category, Object... info) {if (com.zzxy.common.jdbcspy.SpyConfiguration.isCategoryEnabled(category)) {StringBuilder sb = new StringBuilder(category);if (info != null) {Object[] var3 = info;int var4 = info.length;for(int var5 = 0; var5 < var4; ++var5) {Object element = var3[var5];sb.append(" | ").append(element);}}logger.error("{}", filter(sb.toString()));logger.error("sql stack trace", new Exception("sql stack trace"));}}private static String filter(String text) {text = replace(EMAIL_PATTERN, text, "$1***$3");text = replace(PHONE_PATTERN, text, "$1****$3");text = replace(ID_PATTERN, text, "$1**********$6$7");text = replace(ID_PATTERN, text, "$1**********$6$7");text = replace(XM_PATTERN, text, "XM='***'");text = replace(MC_PATTERN, text, "MC='***'");text = replace(ZJMC_PATTERN, text, "ExpertName='***'");return text;}private static String replace(Pattern pattern, String text, String replacement) {Matcher m = pattern.matcher(text);return m.replaceAll(replacement);}}