工具类-数据脱敏

针对姓名、电话、地址、邮箱等敏感信息进行脱敏操作,代码如下:

  1 import org.apache.commons.lang.StringUtils;
  2
  3 /**
  4  * 数据脱敏工具类
  5  * Created by shenruihai on 2018/06/13.
  6  */
  7 public class Desensitized {
  8
  9     /**
 10      * 【中文姓名】只显示第一个汉字,其他隐藏为2个星号,比如:李**
 11      *
 12      * @param fullName
 13      * @return
 14      */
 15     public static String chineseName(String fullName) {
 16         if (StringUtils.isBlank(fullName)) {
 17             return "";
 18         }
 19         String name = StringUtils.left(fullName, 1);
 20         return StringUtils.rightPad(name, StringUtils.length(fullName), "*");
 21     }
 22
 23     /**
 24      * 【身份证号】显示最后四位,其他隐藏。共计18位或者15位,比如:*************1234
 25      *
 26      * @param id
 27      * @return
 28      */
 29     public static String idCardNum(String id) {
 30         if (StringUtils.isBlank(id)) {
 31             return "";
 32         }
 33         String num = StringUtils.right(id, 4);
 34         return StringUtils.leftPad(num, StringUtils.length(id), "*");
 35     }
 36
 37     /**
 38      * 【固定电话】 显示后四位,其他隐藏,比如:*******3241
 39      *
 40      * @param num
 41      * @return
 42      */
 43     public static String fixedPhone(String num) {
 44         if (StringUtils.isBlank(num)) {
 45             return "";
 46         }
 47         return StringUtils.leftPad(StringUtils.right(num, 4), StringUtils.length(num), "*");
 48     }
 49
 50     /**
 51      * 【手机号码】前三位,后四位,其他隐藏,比如:135****6810
 52      *
 53      * @param num
 54      * @return
 55      */
 56     public static String mobilePhone(String num) {
 57         if (StringUtils.isBlank(num)) {
 58             return "";
 59         }
 60         return StringUtils.left(num, 3).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(num, 4), StringUtils.length(num), "*"), "***"));
 61     }
 62
 63     /**
 64      * 【地址】只显示到地区,不显示详细地址,比如:上海徐汇区漕河泾开发区***
 65      *
 66      * @param address
 67      * @param sensitiveSize 敏感信息长度
 68      * @return
 69      */
 70     public static String address(String address, int sensitiveSize) {
 71         if (StringUtils.isBlank(address)) {
 72             return "";
 73         }
 74         int length = StringUtils.length(address);
 75         return StringUtils.rightPad(StringUtils.left(address, length - sensitiveSize), length, "*");
 76     }
 77
 78     /**
 79      * 【电子邮箱】 邮箱前缀仅显示第一个字母,前缀其他隐藏,用星号代替,@及后面的地址显示,比如:d**@126.com
 80      *
 81      * @param email
 82      * @return
 83      */
 84     public static String email(String email) {
 85         if (StringUtils.isBlank(email)) {
 86             return "";
 87         }
 88         int index = StringUtils.indexOf(email, "@");
 89         if (index <= 1)
 90             return email;
 91         else
 92             return StringUtils.rightPad(StringUtils.left(email, 1), index, "*").concat(StringUtils.mid(email, index, StringUtils.length(email)));
 93     }
 94
 95     /**
 96      * 【银行卡号】前六位,后四位,其他用星号隐藏每位1个星号,比如:6222600**********1234
 97      *
 98      * @param cardNum
 99      * @return
100      */
101     public static String bankCard(String cardNum) {
102         if (StringUtils.isBlank(cardNum)) {
103             return "";
104         }
105         return StringUtils.left(cardNum, 6).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(cardNum, 4), StringUtils.length(cardNum), "*"), "******"));
106     }
107
108     /**
109      * 【密码】密码的全部字符都用*代替,比如:******
110      *
111      * @param password
112      * @return
113      */
114     public static String password(String password) {
115         if (StringUtils.isBlank(password)) {
116             return "";
117         }
118         String pwd = StringUtils.left(password, 0);
119         return StringUtils.rightPad(pwd, StringUtils.length(password), "*");
120     }
121
122 }

原文地址:https://www.cnblogs.com/juihai/p/10330867.html

时间: 2024-08-30 16:29:49

工具类-数据脱敏的相关文章

数据校验工具类

思路, 1.传入要校验的属性以及如果校验不过提示信息 2.如果数据校验不过返回json 格式信息. 3.不满足条件抛出自定义异常,然后在异常处理器中获取信息,return 信息 一.自定义异常 public class LyonException extends RuntimeException{ private static final long serialVersionUID = 1L; private String msg; private int code = 500; code 默认

Java并发工具类(四):线程间交换数据的Exchanger

简介 Exchanger(交换者)是一个用于线程间协作的工具类.Exchanger用于进行线程间的数据交换.它提供一个同步点,在这个同步点两个线程可以交换彼此的数据.这两个线程通过exchange方法交换数据, 如果第一个线程先执行exchange方法,它会一直等待第二个线程也执行exchange,当两个线程都到达同步点时,这两个线程就可以交换数据,将本线程生产出来的数据传递给对方. Exchanger的应用场景 1.Exchanger可以用于遗传算法,遗传算法里需要选出两个人作为交配对象,这时

下载数据到Excel,工具类

使用反射将model数据下载到Excel中 package test.upload.utils; import java.lang.reflect.Method;import java.math.BigDecimal;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import java.util.Map; import org.apache.poi.hssf.usermodel.HSSF

智能机器人“小昆”的实现(二)获取服务器数据工具类的编写及测试

没有取得图灵机器人认证的朋友可以看上一篇,点击下面的地址即可: http://www.cnblogs.com/fuly550871915/p/4852148.html 已经取得认证的朋友,可以继续往下做了.下面就开始我们的实际代码编写.在这篇文章中,我们要实现通过调用图灵机器人API获取返回的数据的功能.而且搭建相应的测试环境,看看我们这个功能实现的到底正确不正确. 一.获得服务器返回数据的工具类的实现 主要是android中的简单的网络编程知识的运用.代码如下: 1 package com.f

[C#] 常用工具类——直接在浏览器输出数据

/// <summary> /// <para> </para> /// 常用工具类——直接在浏览器输出数据 /// <para> -------------------------------------------------------------</para> /// <para> DumpDataTable:接在浏览器输出数据DataTable</para> /// <para> DumpListIt

Android学习笔记之数据的Sdcard存储方法及操作sdcard的工具类

FileService.java也就是操作sdcard的工具类: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75

安卓数据持久化工具类总结

程序猿是最懒的生物,开发中从不重复造轮子,实际开发中数据吃就化是必然要处理的一个问题,先总结了几个除处理sqlite外的几个工具类,因为sqlite可以直接用orm,持久化数据有I/O,SharedPreference等等方式. 外置储存卡 package cn.edu.zafu.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java

JAVA中使用MD5加密工具类实现对数据的加密处理

1.MD5工具类 package com.ssm.util; import java.security.MessageDigest; public class MD5Util { //将字节数组转成十六进制字符串 private static String byteArrayToHexString(byte b[]) { StringBuffer resultSb = new StringBuffer(); for (int i = 0; i < b.length; i++) resultSb.

Android 分享一个SharedPreferences的工具类,方便保存数据

我们平常保存一些数据,都会用到SharedPreferences,他是保存在手机里面的,具体路径是data/data/你的包名/shared_prefs/保存的文件名.xml, SharedPreferences的使用也很简单,我自己就写了一个SharedPreferences的工具类,然后就保存在这里,等自己以后需要保存数据直接从这里copy代码,哈哈 工具类如下 [java] view plaincopy package com.example.shortcut; import androi