手机号,身份证,银行卡号数据脱敏

主体

/*** <p>* 数据脱敏* (1)手机号(联系方式类型为:手机):* 正常显示前3位后4位,其他位用*补齐,例如:159****5865* (2)银行卡号:* 正常显示前4位后4位,其他位用*补齐,例如:4392********4175* (3)身份证号(证件类型为:身份证):* 正常显示前3位后2位,其他位用*补齐,例如:120*************43* </p>** @Author: * @Date: 2021/6/19 08:59*/
public class DataDesensitizationUtil {/*** 数据脱敏,不为 手机号,银行卡号,身份证号 则返回空* @param str* @return*/public static String dataDesensitization(String str){if ("".equals(str)){return str;}String s = "";if (IsIDCardUtil.isIDCard(str)){char[] chars = str.toCharArray();String s1 = "";for (int i = 0; i < chars.length; i++) {if (i>2 && i<chars.length-2){s1 = "*";}else {s1 = chars[i] + "";}s += s1;}return s;}if (IsPhoneUtil.isPhoneLegal(str)){char[] chars = str.toCharArray();String s1 = "";for (int i = 0; i <chars.length; i++) {if (i>2 && i<chars.length-4){s1 = "*";}else {s1 = chars[i] + "";}s += s1;}return s;}if (IsBankCardUtil.checkBankCard(str)){char[] chars = str.toCharArray();String s1 = "";for (int i = 0; i <chars.length; i++) {if (i>3 && i<chars.length-4){s1 = "*";}else {s1 = chars[i] + "";}s += s1;}return s;}return s;}public static void main(String[] args) {String server = dataDesensitization("");System.out.println("server = " + server);}}

判断输入有效

判断手机号有效

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;/*** <p>*验证是否为手机号* </p>** @Author: * @Date: 2021/4/13 9:53*/
public class IsPhoneUtil {/***  * 大陆号码或香港号码均可*/public static boolean isPhoneLegal(String str) throws PatternSyntaxException {return isChinaPhoneLegal(str) || isHKPhoneLegal(str);}/***  *      * 大陆手机号码11位数,匹配格式:前三位固定格式+后8位任意数 *      * 此方法中前三位格式有: *      * 13+任意数 *      * 15+除4的任意数 *      * 18+除1和4的任意数 *      * 17+除9的任意数 *      * 147 *      */public static boolean isChinaPhoneLegal(String str) throws PatternSyntaxException {String regExp = "^((13[0-9])|(15[^4])|(18[0,2,3,5-9])|(17[0-8])|(147))\\d{8}$";Pattern p = Pattern.compile(regExp);Matcher m = p.matcher(str);return m.matches();}/***  *      * 香港手机号码8位数,5|6|8|9开头+7位任意数 *      */public static boolean isHKPhoneLegal(String str) throws PatternSyntaxException {String regExp = "^(5|6|8|9)\\d{7}$";Pattern p = Pattern.compile(regExp);Matcher m = p.matcher(str);return m.matches();}}

判断身份证有效

/*** <p>* 判断身份证是否合理* </p>** @Author: * @Date: 2021/6/19 09:05*/
public class IsIDCardUtil {public static boolean isIDCard(String s){String regex = "\\d{15}|\\d{17}[\\dxX]";if(s.matches(regex)) {return true;}else {return false;}}}

判断银行卡号有效

/*** <p>* 校验银行卡号* </p>** @Author: * @Date: 2021/6/19 09:19*/
public class IsBankCardUtil {/*** 校验银行卡卡号** @param cardId* @return*/public static boolean checkBankCard(String cardId) {char bit = getBankCardCheckCode(cardId.substring(0, cardId.length() - 1));if (bit == 'N') {return false;}return cardId.charAt(cardId.length() - 1) == bit;}/*** 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验位** @param nonCheckCodeCardId* @return*/public static char getBankCardCheckCode(String nonCheckCodeCardId) {if (nonCheckCodeCardId == null || nonCheckCodeCardId.trim().length() == 0|| !nonCheckCodeCardId.matches("\\d+")) {//如果传的不是数据返回Nreturn 'N';}char[] chs = nonCheckCodeCardId.trim().toCharArray();int luhmSum = 0;for (int i = chs.length - 1, j = 0; i >= 0; i--, j++) {int k = chs[i] - '0';if (j % 2 == 0) {k *= 2;k = k / 10 + k % 10;}luhmSum += k;}return (luhmSum % 10 == 0) ? '0' : (char) ((10 - luhmSum % 10) + '0');}
}

手机号,身份证,银行卡号数据脱敏相关推荐

  1. 前端手机身份证护照通行证数据脱敏

    文章目录 目标:前端实现多证件显示数据脱敏 目标:前端实现多证件显示数据脱敏 phoneNumberDesensitization(phone){/*手机号脱敏*/phone = phone.repl ...

  2. PHP数据脱敏显示(手机号,银行卡号,身份证等)

    /*** 数据脱敏* @param $string 需要脱敏值* @param int $start 开始* @param int $length 结束* @param string $re 脱敏替代 ...

  3. 【linlong】Hutool工具,身份证号、手机号、姓名等数据脱敏信息工具类介绍

    前言   在开发系统过程中,经常会接触到大量的数据信息,这些数据信息可能包含身份证号.手机号.姓名.卡号等各种敏感信息.而有些用户需求是不允许,这些敏感信息数据为了保护用户个人信息的安全.对这些数据需 ...

  4. 【收藏】身份证号、手机号、姓名等数据脱敏信息工具类介绍

    前言   在开发系统过程中,经常会接触到大量的数据信息,这些数据信息可能包含身份证号.手机号.姓名.卡号等各种敏感信息.为了保护用户个人信息的安全.对这些数据需要进行特殊处理. 数据脱敏   数据脱敏 ...

  5. 常用的数据脱敏(手机、邮箱、身份证号)

    一.什么是数据脱敏 先来看看什么是数据脱敏?数据脱敏也叫数据的去隐私化,在我们给定脱敏规则和策略的情况下,对敏感数据比如 手机号.银行卡号 等信息,进行转换或者修改的一种技术手段,防止敏感数据直接在不 ...

  6. Android实战场景 - 输入手机号、银行卡号、身份证号时动态格式化

    在日常项目开发中,如果稍微严谨点的话,其中关于手机号.银行卡号.身份证号的输入格式有做了限制格式化操作,主要是为了给用户带来更好的体验感: 最近同事正好问到了我这个问题,虽然以前做过这类型功能,但是并 ...

  7. Java对姓名, 手机号, 身份证号, 地址进行脱敏

    替换几位就用几个*号 一.姓名 1, 脱敏规则: 只显示第一个汉字,比如李某某置换为李**, 李某置换为李* private static String desensitizedName(String ...

  8. 地址 脱敏规则_Java对姓名, 手机号, 身份证号, 地址进行脱敏

    替换几位就用几个*号 一.姓名 1, 脱敏规则: 只显示第一个汉字,比如李某某置换为李**, 李某置换为李* private staticString desensitizedName(String ...

  9. 数据脱敏显示-用户名和手机号

    数据脱敏显示 前台的客户姓名和手机号需要脱敏处理,姓名只保留姓,手机号中间四位使用星号. 举例: 刘德华显示为刘**15300001234显示为153****1234 不止显示的内容脱敏,后台也不能传 ...

最新文章

  1. 30天python开发_30天解锁Python量化开发——初探交易接口
  2. python恶搞表情包-Python开发个人专属表情包网站,表情在手,天下我有
  3. hadoop 之DefaultStringifier
  4. JAVA教程 第六讲 Java的线程和Java Applet(二)
  5. 解决oh my zsh Insecure completion-dependent directories detected
  6. Java分布式系统高并发解决方案
  7. 小米笔记本air无法充电_惠普笔记本电池无法充电问题的解决方法
  8. vs2019中如何创建qt项目_Qt在vs2019中使用及设置方法
  9. mysql 查询语句
  10. [Java] 蓝桥杯 BASIC-6 基础练习 杨辉三角形
  11. 2. CSS 高级语法
  12. 一文学会用 Tensorflow 搭建神经网络
  13. 20200706每日一句
  14. Android Framework实战视频系列
  15. android面试笔试题详解
  16. 判断是否为IE浏览器
  17. python画公主_【图片】来几张公主的手绘【勇敢的公主吧】_百度贴吧
  18. 不想周末被工作提醒打扰?你需要这个手机便签消息免打扰设置
  19. 晓亮的编程经验总结.txt
  20. 求最小公倍数的方法php,JS怎么求得最小公倍数和最大公约数

热门文章

  1. 4、微信小程序-项目配置
  2. 【图论】【网络流】费用流模型
  3. 计算机参数rp是什么,什么是RP
  4. ubuntu开启TFTP服务和NFS服务
  5. Ubuntu学习笔记(二)
  6. 大学生网上卖鞋子,靠自己双手实现了财富梦
  7. 怎么测试一个java程序占用的内存和cpu消耗?
  8. 绿色软件是怎么制作的?(转)
  9. 如何自建一个慕课(微课)演播室
  10. nginx(三十六)健康检查