diff --git a/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java b/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java index aafd5fc34..d68b5d36c 100644 --- a/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java @@ -3648,6 +3648,7 @@ public class CharSequenceUtil { * StrUtil.desensitized("duandazhi-jack@gmail.com.cn", DesensitizedUtils.DesensitizedType.EMAIL)) = "d*************@gmail.com.cn" * StrUtil.desensitized("1234567890", DesensitizedUtils.DesensitizedType.PASSWORD)) = "**********" * StrUtil.desensitized("苏D40000", DesensitizedUtils.DesensitizedType.CAR_LICENSE)) = "苏D4***0" + * StrUtil.desensitized("11011111222233333256", DesensitizedUtils.DesensitizedType.CAR_LICENSE)) = "1101 **** **** **** 3256" * * * @param str 字符串 diff --git a/hutool-core/src/main/java/cn/hutool/core/util/DesensitizedUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/DesensitizedUtil.java index 9f6cbdd0c..17f327d53 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/DesensitizedUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/DesensitizedUtil.java @@ -12,6 +12,8 @@ package cn.hutool.core.util; *
  • 地址
  • *
  • 电子邮件
  • *
  • 密码
  • + *
  • 车牌
  • + *
  • 银行卡号
  • * * * @author dazer and neusoft and qiaomu @@ -42,7 +44,8 @@ public class DesensitizedUtil { //密码 PASSWORD, //中国大陆车牌,包含普通车辆、新能源车辆 - CAR_LICENSE + CAR_LICENSE, + BANK_CARD } /** @@ -57,6 +60,7 @@ public class DesensitizedUtil { * DesensitizedUtil.desensitized("duandazhi-jack@gmail.com.cn", DesensitizedUtils.DesensitizedType.EMAIL)) = "d*************@gmail.com.cn" * DesensitizedUtil.desensitized("1234567890", DesensitizedUtils.DesensitizedType.PASSWORD)) = "**********" * DesensitizedUtil.desensitized("苏D40000", DesensitizedUtils.DesensitizedType.CAR_LICENSE)) = "苏D4***0" + * DesensitizedUtil.desensitized("11011111222233333256", DesensitizedUtils.DesensitizedType.CAR_LICENSE)) = "1101 **** **** **** 3256" * * * @param str 字符串 @@ -98,6 +102,9 @@ public class DesensitizedUtil { case CAR_LICENSE: newStr = DesensitizedUtil.carLicense(String.valueOf(str)); break; + case BANK_CARD: + newStr = DesensitizedUtil.bankCard(String.valueOf(str)); + break; default: } return newStr; @@ -245,4 +252,32 @@ public class DesensitizedUtil { } return carLicense; } + + /** + * 银行卡号脱敏 + * eg: 1101 **** **** **** 3256 + * @param s 银行卡号 + * @return 脱敏之后的银行卡号 + * @since 5.6.3 + */ + public static String bankCard(String s) { + if (StrUtil.isBlank(s)) { + return StrUtil.EMPTY; + } + s = StrUtil.trim(s); + if (s.length() < 9) { + return s; + } + String s1 = s.substring(0, 4); + String s2 = s.substring(s.length() - 4, s.length()); + String sMiddle = s.substring(4, s.length() - 4); + StringBuilder buf = new StringBuilder(); + for (int i = 0; i < sMiddle.length(); ++i) { + buf.append("*"); + if ((i + 1) % 4 == 0) { + buf.append(" "); + } + } + return s1 + " " + buf.toString() + " " + s2 + ""; + } }