zoukankan      html  css  js  c++  java
  • logback身份证脱敏

    logback身份证脱敏

    学习了:https://shift-alt-ctrl.iteye.com/blog/2425469

    https://blog.csdn.net/fywfengyanwei/article/details/78484590

    java:

    package com.util;
    import ch.qos.logback.classic.pattern.MessageConverter;
    import ch.qos.logback.classic.spi.ILoggingEvent;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class ComplexMessageConverter extends MessageConverter {
    
        @Override
        public String convert(ILoggingEvent event) {
            String source = event.getFormattedMessage();
            if (source == null || source.isEmpty()) {
                return source;
            }
            // 身份证号码脱敏
            String card = "([1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx])|" +
                    "(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3})";
            Pattern p = Pattern.compile(card);
            Matcher matcher = p.matcher(source);
            source = matcher.replaceAll("idCardNo");
            return source;
        }
    }

    logback.xml:

    <conversionRule conversionWord="m"
                    converterClass="com.util.ComplexMessageConverter"></conversionRule>

    脱敏优化:

    public static void main(String[] args) {
        // 身份证号码脱敏
        // 原始的正则表达式
        String card = "([1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx])|" +
                "([1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3})";
        card = "(([1-9]\d{5}(18|19|20)\d{2})(((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31))(\d{3}[0-9Xx]))"; // 18位身份证
        String str = "身份证120105199808092345,进行脱密;身份证120105199808092345,进行脱敏2;"; // 两个也是可以的
        String s = str.replaceAll(card, "$1*$2*$3*$4*$5*$6*$7*$8*$9*$10*$11"); // 中间过程
        System.out.println(s);
        String s1 = str.replaceAll(card, "$2****$10");
        System.out.println(s1);
    
        card = "(([1-9]\d{5}\d{2}((0[1-9])|(10|11|12)))((([0-2][1-9])|(10)|20|30|31)\d{2})(\d))"; //15位身份证
        str = "身份证130105191208092,进行脱密";
        s = str.replaceAll(card, "$1*$2*$3*$4*$5*$6*$7*$8*$9*$10"); // 中间过程
        System.out.println(s);
        s1 = str.replaceAll(card, "$2****$10");
        System.out.println(s1);
        // 汇总一下,汇总之后的写法不统一;
        card = "(([1-9]\d{5}(18|19|20)\d{2})(((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31))(\d{3}[0-9Xx]))|"+
                "(([1-9]\d{5}\d{2}((0[1-9])|(10|11|12)))((([0-2][1-9])|(10)|20|30|31)\d{2})(\d))";
        str = "身份证130105191208092,进行脱密";
        s = str.replaceAll(card, "$1*$2*$3*$4*$5*$6*$7*$8*$9*$10*$11*$12*$13*$14"); // 中间过程
        System.out.println(s);
        s1 = str.replaceAll(card, "$2****$10");
        System.out.println(s1);
    }
  • 相关阅读:
    asp读书笔记(二)内置对象
    网上收集的关于iframe的自适应高度代码js的
    第一遇到地震,虽然小点
    给网友写的控制页面元素高度的代码(js)
    给用户控件添加可枚举的属性
    标记(Tagging)能给网站带来的7大益处
    代码最重要的读者不再是编译器、解释器或者电脑,而是人!
    亚洲超大数据库会议(XLDB Asia 2012)
    每年15万美元!这是开发人员解决构造问题的总成本!
    华章IT图书书讯(2012年第7期)
  • 原文地址:https://www.cnblogs.com/stono/p/10387248.html
Copyright © 2011-2022 走看看