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

脱敏工具类

时间:2022-08-24 17:45:48浏览次数:59  
标签:Type String res equals value 工具 type 脱敏


import java.io.Serializable;

/**
 * 脱敏工具类
 * 脱敏规则:可显示字符
 * 姓名:前1
 * 电话:前3后4
 * 身份证:前6后3
 * 地址:省、市
 * 银行账号:后4
 */
public class DesensitizeUtils implements Serializable {

    public static final String desensitize(String value,String type){
        if(null == value || "".equals(value)){
            return value;
        }
        String res = "";
        if(Type.NAME.name().equals(type)){
            res = desensitizeName(value);
        }else if(Type.MOBILE.name().equals(type)){
            res = desensitizeMobile(value);
        }else if(Type.IDNO.name().equals(type)){
            res = desensitizeIdno(value);
        }else if(Type.BANKNO.name().equals(type)){
            res = desensitizeBankNo(value);
        }else{
            throw new RuntimeException("Unrecognized mask type!");
        }

        return res;
    }

    private static String desensitizeName(String value){
        return value.substring(0,1)+generateStar(value.length()-1);
    }
    private static String desensitizeMobile(String value){
        if(value.length()<11){
            throw new RuntimeException("Illegal Mobile Number.");
        }
        return value.substring(0,3)+generateStar(value.length()-7)+value.substring(value.length()-4);
    }
    private static String desensitizeIdno(String value) {
        if(value.length()<15){
            throw new RuntimeException("Illegal ID number");
        }
        return value.substring(0,6)+generateStar(value.length()-9)+value.substring(value.length()-3);
    }
    private static String desensitizeBankNo(String value){
        if(value.length()<4){
            throw new RuntimeException("Illegal bank account number");
        }
        return generateStar(value.length()-4)+value.substring(value.length()-4);
    }

    private static String generateStar(int cnt){
        StringBuilder sb = new StringBuilder();
        for(int i=0;i<cnt;i++){
            sb.append("*");
        }
        return sb.toString();
    }

    public enum Type{
        NAME,MOBILE,IDNO,BANKNO
    }

}


标签:Type,String,res,equals,value,工具,type,脱敏
From: https://www.cnblogs.com/lovedaodao/p/16621010.html

相关文章

  • [ROS学习]4.ROS命令行工具
    笔记参考:【ROS学习笔记】4.玩转小海龟——ROS命令行工具基于B站ROS公开课:【古月居】古月·ROS入门21讲基于Ubuntu20.04.1、Noetic版本1回顾第一个小海龟程序打开小海......
  • MapStruct映射工具
    一、mapStruct映射工具1.1功能在编译时期是处理映射注解,实现类到类之间的映射MapStructvsBeanUtilsBeanUtils:在运行时根据反射动态赋值缺点:动态赋值,存在大量......
  • 智能证件照api——可立图一键抠图工具
    可立图是一家可以在线智能抠图的网站,同时也可以一键生成证件照提供了抠图api服务和证件照api服务注册可立图官网后可获取免费接口次数1.证件照接口地址:https://www.cli......
  • Java工具篇之Disruptor高性能队列
    简介: disruptor适用于多个线程之间的消息队列,`作用与ArrayBlockingQueue有相似之处`,但是disruptor从功能、性能都远好于ArrayBlockingQueue,当多个线程之间传递大量数据或......
  • 迁移 Nacos 和 ZooKeeper,有了新工具
    简介: 注册中心迁移在行业中主要有两个方案,一个是双注册双订阅模式(类似数据库双写),一个是Sync模式(类似于数据库DTS);MSE同时支持了两种模式,对于开通MSE服务治理客户,MSE......
  • 文件分享工具ShareLocalFile不需要云盘的实时上传下载文件的云盘工具可以搜索整个网络
    工具的下载地址:https://comm.zhaimaojun.cn/AllSources/ToolDetail/?tid=9693这是一个未来的项目,可以分享我们的文件,目前由于个人的技术水平限制,只能暂时先做到目前的水平......
  • 微信小程序开发工具,更新后报typeof4 is not a function
    升级开发者工具版本后,新版工具将es6转es5和增强编译合并,报以下错误。  解决方法有两种:1.修改一下@babel/runtime/helpers/typeof.js文件,内容修改为代码片段的。......
  • [Android开发学iOS系列] 工具篇: Xcode使用和快捷键
    [Android开发学iOS系列]工具篇:Xcode使用和快捷键工欲善其事必先利其器.编辑Cmd+N:新建文件Option+Cmd+N:新建文件夹Cmd+/:注释Ctrl+I:formatind......
  • 【Java基础】操作数组的工具类Arrays
    1.常用方法方法描述booleanequals(int[]a,int[]b)判断两个数组是否相等,顺序不一样也返回falseStringtoString(int[]a)输出数组信息voidfill(int[]......
  • 迁移 Nacos 和 ZooKeeper,有了新工具
    作者:子葵背景注册中心迁移在行业中主要有两个方案,一个是双注册双订阅模式(类似数据库双写),一个是Sync模式(类似于数据库DTS);MSE同时支持了两种模式,对于开通MSE服务治理......