前言
在开发系统过程中,经常会接触到大量的数据信息,这些数据信息可能包含身份证号、手机号、姓名、卡号等各种敏感信息。为了保护用户个人信息的安全。对这些数据需要进行特殊处理。
数据脱敏
数据脱敏,指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。这样就可以在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏后的真实数据集。
DesensitizedUtil工具类
我们在系统开发和数据清洗过程中,经常某些数据需要经过加密或者脱敏之后进行传输。将这些敏感数据在后台脱敏之后,发送给前端展示,就能避免敏感数据信息的泄露。那么今天给大家介绍一个基于hutool的工具类DesensitizedUtil。
目前类DesensitizedUtil工具类实现的脱敏数据类型包括以下内容:
- 用户id
- 中文姓名
- 身份证号
- 座机号
- 手机号
- 地址
- 电子邮件
- 密码
- 中国大陆车牌,包含普通车辆、新能源车辆
- 银行卡
DesensitizedUtil工具类实现的主要原理是将需要隐藏掉的信息用*号代替即可。
示例
用户id脱敏
用户id脱敏后,默认返回了0,数据类型是long类型。
- 脱敏前:88888
- 脱敏后:0
//用户id
Long aLong = DesensitizedUtil.userId();
System.out.println(aLong);
输出结果:0
用户姓名脱敏
用户姓名脱敏,默认返回姓氏,也就是只返回姓名的第一个字,其他的信息隐藏,数据类型是String类型。
- 脱敏前:掘金社区
- 脱敏后:掘**
//用户姓名
String userName = DesensitizedUtil.chineseName("掘金社区");
System.out.println(userName);
输出结果:掘***
身份证号脱敏
身份证号敏,需要传递三个参数,第一个是身份证号码,第二个是首部需要显示的号码数量,从1开始,第三个是尾部需要显示的号码数量也是从1开始,数据返回类型是String类型。
- 脱敏前:110120200001018888
- 脱敏后:110120********8888
//身份证号
String idCardNum = DesensitizedUtil.idCardNum("110120200001018888",6,4);
System.out.println(idCardNum);
输出结果:110120********8888
座机号脱敏
座机号脱敏后,前四位后两位显示,其他都隐藏,返回数据类型是String类型。
- 脱敏前:010-12345678
- 脱敏后:010-******78
//座机号
String fixedPhone = DesensitizedUtil.fixedPhone("010-12345678");
System.out.println(fixedPhone);
输出结果:010-******78
手机号脱敏
手机号脱敏后,前三位,后4位显示,其他都隐藏,返回数据类型是String类型。
- 脱敏前:18812345678
- 脱敏后:188****5678
//手机号
String mobilePhone = DesensitizedUtil.mobilePhone("18812345678");
System.out.println(mobilePhone);
输出结果:188****5678
地址脱敏
地址脱敏后只显示到地区,不显示详细地址,其他都隐藏,可以设置敏感信息长度,返回数据类型是String类型。
- 脱敏前:北京市东城区建国路1000号
- 脱敏后:北京市东城区建国******
//地址
String address = DesensitizedUtil.address("北京市东城区建国路1000号",6);
System.out.println(address);
输出结果:北京市东城区建国******
电子邮件脱敏
地址脱敏后只显示到地区,不显示详细地址,其他都隐藏,可以设置敏感信息长度,返回数据类型是String类型。
- 脱敏前:123456@qq.com
- 脱敏后:1*****@qq.com
//电子邮件
String email = DesensitizedUtil.email("123456@qq.com");
System.out.println(email);
输出结果:1*****@qq.com
密码脱敏
地址脱敏后只显示到地区,不显示详细地址,其他都隐藏,可以设置敏感信息长度,返回数据类型是String类型。
- 脱敏前:18812345678
- 脱敏后:***********
//密码
String password = DesensitizedUtil.password("18812345678");
System.out.println(password);
输出结果:***********
车牌脱敏
地址脱敏后只显示到地区,不显示详细地址,其他都隐藏,可以设置敏感信息长度,返回数据类型是String类型。
- 脱敏前:18812345678
- 脱敏后:***********
//车牌
String carLicense = DesensitizedUtil.carLicense("18812345678");
System.out.println(carLicense);
输出结果:***********
银行卡号脱敏
地址脱敏后只显示到地区,不显示详细地址,其他都隐藏,可以设置敏感信息长度,返回数据类型是String类型。
- 脱敏前:6666669578938888
- 脱敏后:6666 **** **** 8888
//银行卡号
String bankCard = DesensitizedUtil.bankCard("6666669578938888");
System.out.println(bankCard);
输出结果:6666 **** **** 8888
结语
好了,以上就是基于DesensitizedUtil信息脱敏工具的介绍,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。
作者介绍:【小阿杰】一个爱鼓捣的程序猿,JAVA开发者和爱好者。