Java实现对敏感数据进行脱敏操作

创建DesensitizationUtil.java工具类

/**
 * 真实姓名脱敏
 * 中文姓名只显示第一个汉字,其他隐藏为2个星号
 * 例子:李**
 * 张三丰 :张**
 * @param fullName
 * @return
 */
public static String nameSensitive(String fullName){
    String name = StringUtils.left(fullName, 1);
    return StringUtils.rightPad(name, StringUtils.length(fullName), "*");
}

/**
 * 手机号码数据脱敏
 * 18233583070 脱敏后: 182****3030
 * @param mobile
 * @return
 */
public static String mobilePhoneSensitive(String mobile) {
    return StringUtils.left(mobile, 3).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(mobile, 4), StringUtils.length(mobile), "*"), "***"));
}

/**
 * 座机数据脱敏
 * 座机的前2位和后4位保留,其余的隐藏。
 * @param fixedPhone
 * @return
 */
public static String fixedPhoneSensitive(String fixedPhone){
    return StringUtils.left(fixedPhone, 2).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(fixedPhone, 4), StringUtils.length(fixedPhone), "*"), "***"));
}

/**
 * 邮箱数据脱敏
 * 邮箱前缀仅显示第一个字母,前缀其他隐藏,用星号代替,@及后面的地址显示
 * 例子:g**@163.com
 * @param email
 * @return
 */
public static String emailSensitive(String email){
    int index = StringUtils.indexOf(email, "@");
    if (index <= 1) {
        return email;
    } else {
        return StringUtils.rightPad(StringUtils.left(email, 1), index, "*").concat(
                StringUtils.mid(email, index, StringUtils.length(email)));
    }
}

/**
 * 身份证号脱敏类型
 * 前3位,后4位
 * 130722199102323232 脱敏后: 130*************3232
 * @param idCard
 * @return
 */
public static String iDCardSensitive(String idCard) {
    return StringUtils.left(idCard, 3).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(idCard, 4), StringUtils.length(idCard), "*"), "***"));
}

/**
 * 银行卡号数据脱敏
 * 只留前四位和后四位
 * 6227 0383 3938 3938 393 脱敏结果: 6227 **** **** ***8 393
 * @param bankCard
 * @return
 */
public static String bandCardSensitive(String bankCard){
    return StringUtils.left(bankCard, 4).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(bankCard, 4), StringUtils.length(bankCard), "*"), "***"));
}

private static final int RIGHT=10;
private static final int LEFT=6;
/**
 * 收货地址数据脱敏
 * 地址只显示到地区,不显示详细地址;我们要对个人信息增强保护
 * 例子:北京市海淀区****
 * @param address
 * @return
 */
public static String addressSensitive(String address){
    int length = StringUtils.length(address);
    if(length > RIGHT + LEFT){
        return StringUtils.rightPad(StringUtils.left(address, length - RIGHT), length, "*");
    }
    if(length <= LEFT){
        return address;
    }else{
        return address.substring(0,LEFT + 1).concat("*****");
    }
}

以上参数需要对其判null处理!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值