首页 > 其他分享 >脱敏工具类

脱敏工具类

时间:2023-04-21 19:45:10浏览次数:39  
标签:wordMask return String idCard param length 工具 脱敏

https://www.cnblogs.com/SjhCode/p/mask.html

/**
* @author
* @date 2022/8/31 13:50
* @description TODO 信息脱敏工具类
*/
public class MaskUtil {

/**
* 手机号显示首3末4位,中间用*号隐藏代替,如:188****5593
*
* @param mobile
* @return
*/
public static String maskMobile(String mobile) {
if (StringUtils.isBlank(mobile) || mobile.length() <= 8) {
return mobile;
}
return wordMask(mobile, 3, 4, "*");
}

/**
* 电话号码显示区号及末4位,中间用*号隐藏代替,如:055****6666
*
* @param telephone
* @return
*/
public static String maskTelephone(String telephone) {
if (StringUtils.isBlank(telephone)) {
return telephone;
}
String result;
String substring = telephone.substring(telephone.length() - 4);
if (telephone.length() > 8) {
if (telephone.contains("-")) {
String[] temp = telephone.split("-");
result = temp[0] + "****" + temp[1].substring(temp[1].length() - 4);
} else {
result = telephone.substring(0, 3) + "****" + substring;
}
} else {
result = "****" + substring;
}
return result;
}

/**
* 身份证号显示首6末4位,中间用4个*号隐藏代替,如:340121****3754
*
* @param idCard
* @return
*/
public static String maskIDCard(String idCard) {
if (StringUtils.isBlank(idCard)) {
return idCard;
}

return wordMask(idCard, 3, 4, "*");
}

/**
* 显示前1、5、6、7、8、9、10、11、12、18位,如:3***23197402*****X
*
* @param idCard
* @return
*/
public static String maskIDCard2(String idCard) {
if (StringUtils.isBlank(idCard)) {
return idCard;
}
idCard = wordMask(idCard, 1, 14, "*");
return wordMask(idCard, 12, 1, "*");
}

/**
* 银行卡显示首6末4位,中间用4个*号隐藏代替,如:622202****4123
*
* @param cardNo
* @return
*/
public static String maskBankCard(String cardNo) {
if (StringUtils.isBlank(cardNo) || cardNo.length() < 10) {
return cardNo;
}
return wordMask(cardNo, 6, 4, "*");
}

/**
* 邮箱像是前两位及最后一位字符,及@后邮箱域名信息,如:ch****[email protected]
*
* @param email
* @return
*/
public static String maskEmail(String email) {
if (StringUtils.isBlank(email)) {
return email;
}
String[] temp = email.split("@");

return wordMask(temp[0], 2, 1, "*") + "@" + temp[1];
}

/**
* 汉字掩码
* 0-1字,如:用(用)
* 2字,如:用于(*于)
* 3-4字,如:用于掩(用*掩)、用于掩码(用**码)
* 5-6字,如:用于掩码测(用于*码测)、用于掩码测试(用于**测试)
* 大于6字,如:用于掩码测试的字符串(用于掩****字符串)
*
* @param name
* @return
*/
public static String maskName(String name) {
int length = StringUtils.length(name);
switch (length) {
case 0:
case 1:
return name;
case 2:
return "*" + name.substring(1, 2);
case 3:
return "*" + name.substring(1, 3);
case 4:
return wordMask(name, 1, 1, "*");
case 5:
case 6:
return wordMask(name, 2, 2, "*");
default:
return wordMask(name, 3, 3, "*");
}
}

/**
* 全隐藏,如: ***
*
* @param str
* @return
*/
public static String maskAll(String str) {
if (StringUtils.isBlank(str)) {
return str;
}
return "******";
}

/**
* 对字符串进行脱敏处理 --
*
* @param word 被脱敏的字符
* @param startLength 被保留的开始长度 前余n位
* @param endLength 被保留的结束长度 后余n位
* @param pad 填充字符
*/
public static String wordMask(String word, int startLength, int endLength, String pad) {
if (startLength + endLength > word.length()) {
return StringUtils.leftPad("", word.length() - 1, pad);
}
String startStr = word.substring(0, startLength);
String endStr = word.substring(word.length() - endLength);
return startStr + StringUtils.leftPad("", word.length() - startLength - endLength, pad) + endStr;
}
}

标签:wordMask,return,String,idCard,param,length,工具,脱敏
From: https://www.cnblogs.com/chuangsi/p/17341533.html

相关文章

  • 测试常用工具总结
    1.adb       安卓调试查日志等2.git         代码管理平台3.idea        java集成开发平台4.pycharm    Python集成开发平台5.jdk         Java编译环境6.jmeter       压测工具7......
  • 常用的Java开发工具IDEA、eclipse比较
    常用的Java开发工具比较​ 市场上Java开发常用的编辑器可谓是琳琅满目,令人眼花缭乱,甚至让人难以抉择。所以今天挑选了几款主流的编辑器进行介绍,都是功能比较丰富的IDE,至于大神使用的普通文本编辑器就不再此次考虑范围内,主要介绍IntelliJIDEA、Eclipse、NetBeans、VisualStudi......
  • wrk压测工具
     1、参数说明使用方法:wrk<选项><被测HTTP服务的URL>Options:-c,--connections<N>跟服务器建立并保持的TCP连接数量-d,--duration<T>压测时间-t,--t......
  • 工具集
    Linux连接与文件传输工具MobaXtermportableedition免安装;installeredition安装版FileZilla文件较大时,下载较慢,因此推荐使用FileZilla下载大文件Tabby-跨越堡垒机的SSH利器-基础篇 内存消耗大,支持SSH的JumpHost跳板连接。......
  • 图像智能降噪工具:Topaz Photo AI for Mac v1.3.1
    TopazPhotoAI是一款适用于Mac的图像处理软件,它使用人工智能技术对照片进行编辑和优化。该软件提供了多种强大的功能,帮助用户轻松地改善图像质量,并实现自定义的效果。TopazPhotoAI支持多种文件格式,包括JPEG、TIFF、PNG、RAW等,并且能够自动检测并修复许多常见的问题,例如模糊、噪......
  • 原型设计工具比较和实践
    目录一、原型设计工具比较1.墨刀2.Axure3.Mockplus二、原型设计1.主题名称2.功能介绍3.界面设计考虑因素4.切换界面(1)视频界面(2)视频播放界面(3)个人信息界面(4)编辑个人信息界面5.界面切换流程一、原型设计工具比较1.墨刀优点新手小白型工具,操作难度较低模板较多,可......
  • 内网穿透工具
    内网穿透工具什么是内网穿透?简单点,一句话概括:它将内网下的本地服务器通过安全隧道暴露至公网。使得公网用户可以正常访问内网服务。比如你本地开发项目启动了,想让别人从互联网上面访问到,这个内网穿透就派上用场了,当然这只是我使用的范围,其他的我也用不上、下面介绍的内......
  • 浅谈日出日落的计算方法以及替代工具 - 日出日落 API
    引言如果你想知道精确的日落日出时间,又或者你想设计一个日出日落时间查询的应用,又或者你只是好奇点进来了,还是可以过来围观一下涨涨知识,今天想跟大家聊一聊的是日出日落的计算方法以及替代工具-日出日落API。日出日落API是一种可以获取指定城市或地点每日日出时间和日落时......
  • 全平台数据(数据库)管理工具 DataCap 管理 Rainbond 上的所有数据库
    DataCap是用于数据转换、集成和可视化的集成软件,支持多种数据源、文件类型、大数据相关数据库、关系数据库、NoSQL数据库等。通过该DataCap可以实现对多个数据源的管理,对数据源下的数据进行各种操作转换,制作数据图表,监控数据源等功能。在Rainbond上部署DataCap前提安装Ra......
  • #正版软件推荐 |Todo 清单高级账户待办事项与时间管理工具
    这款待办事项与时间管理应用让你成为时间的主宰。它融合IvyLee时间管理法和Pomodoro番茄工作法,搭配强大的数据复盘系统,为你的学习、工作和生活带来翻天覆地的变化。该应用已上线Android、Windows、Mac和华为鸿蒙平台,并将逐步支持iPhone、iPad、AppleWatch等更多设备。众所周知,时......