关于数据脱敏的一些思考

这段时间一直在做数据脱敏有关的事情,其中遇到一个问题就是ip需要脱敏,我一开始想了很多办法,包括String字符串的分段功能,后面发现还是有缺陷,缺陷在于识别方面我是根据位数划分,那么会遇到不是ip,但是.这个就很有可能也会被识别就会产生误判,所以后面经过我学委的指导,用上了正则表达式,从一串字符串中去识别出ip的内容,并且提取出来,提取出来后再对ip进行处理,反正我以为我成功解决了这一问题........哈哈哈,我以为的总是我以为的,我发现给到的内容进行了加密,我没有办法把一段内容全部复制,我甚至怀疑是String不允许那么长的内容改成了StringBuffer,后面才发现不是的,就是表格不支持复制那么多内容,所以我也没办法. 我一开始面对这样的大量的需要脱敏的数据,我的想法是绝对不能这么一个一个去改,那不知道要改到什么时候,于是想试试以文件流加载进,后面再批量自动脱敏后导出,这个思路是没有什么问题的,但是文件加密,连复制内容都是有限制的,不要问我为什么不解锁,因为公司给资料是有密码加密的,利用手段解密之后我如何还原文件?还是盲区,或许今后会遇见吧.

先来记录一下这个ip脱敏的工具类吧

package com.jcx;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author jcx
 * @description
 * @createTime 2022/3/4 8:57
 */
public class GetIp {
    /**
     * 正则提前字符串中的IP地址
     * @param ipString
     * @return
     */
    public static String getIps(String ipString){
        String regEx="((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)";
        List<String> ips = new ArrayList<String>();
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(ipString);
        String replace=null;
        while (m.find()) {
            String result = m.group();
            String string = getString(result);

            replace = ipString.replace(result, string);
        }
        return replace;
    }


    public static String getString(String c){

        String[] split = c.split("\\.");

        StringBuffer c2=new StringBuffer();
        c2.append(split[0]+".");
        for (int i = 0 ; i < split.length; i++) {
            if (i%3==1 && i!=0){
                c2.append("**.");
            }
            if (i%3==2 && i!=0){
                c2.append("***.");
            }
            if (i%3==0 && i!=0){
                c2.append(split[i]+".");
            }
        }
        String s = c2.toString();
        return s.substring(0,s.length()-1);
    }


    public static void main(String[] args) {
        StringBuffer stringBuffer=new StringBuffer();
        System.out.println(getIps(stringBuffer.toString()));


        String ipString="1,LB206_HDS4080_AP_001分配1T空间给172.18.30.24172.18.30.132172.18.30.89172.18.68.205172.18.68.20610.21.206.702,CAF4_HDS4080_AP_001\n" +
                "分配1T空间给172.16.37.212172.16.37.78172.16.37.201172.16.33.68172.16.33.69172."+"onepluscorp.cn"+"IN{typeforward;forwardonly;forwarders{10.21.193.76;10.21.193.77;};};zone"+"oneplu";
        System.out.println(getString(ipString));
        System.out.println(getIps(ipString));
    }
}

今后遇到就会可以直接用了

再就是你问我怎么解决这个问题的,,,,,,我确实不太可能一个一个改,我最后百度到一个方法,要是你们也遇到可以借鉴一下.

*.   查找以.结尾

***. 把查找到的替换成这个

=A3&";"&B3&"';"&C3&"';"&C3   针对需要拆分内容后需要合并的函数

=RIGHT(J2,10)   截取某个单元格的内容的一部分(针对只要某一部分)

=LEFT(K2,1)&"**"&LEFT(K2,3)&"****"&RIGHT(K2,3)   截取某个单元格的内容的一部分(针对要前后部分)

=LEFT(K2,2)&"****"&RIGHT(K2,2)   截取某个单元格的内容的一部分(针对要前后部分)

=LEFT(K2,1)&"*"&RIGHT(K2,1) 截取某个单元格的内容的一部分(针对要前后部分)


哈哈,还有一个必杀技,就是批量填录,点击写好的单元格,出现加号,双击,就会自动填充到最后

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值