邮箱、手机号等敏感信息掩码_邮箱掩码-程序员宅基地

技术标签: 字段加星*  Java  email加*  掩码  敏感信息过滤  

业务场景:数据库中查出来数据展示到前端时,对于敏感字段需要掩码处理。

实现方案:数据库捞出结果集之后去下面的encryptEntity或encryptJsonArray这两个方法里撸一遍。

具体代码实现:

package com.cn.util;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.google.common.collect.Maps;

/**
 * 掩码工具类
 * @author Dabria_ly
 *
 */
public class MaskUtil {
	
	private static final Logger logger = LoggerFactory.getLogger(MaskUtil.class);
	
	public static final String ENCRYPT_DEF = "***"; //默认全掩码
	
	/**
     * 敏感信息掩码
     *
     * @param jsonString JsonString
     * @param maskKeys   自定义需要进行掩码的Key
     * @return
     */
    public static Object maskJsonString(String jsonString, String... maskKeys) {
        try {
            boolean isJsonObject = isJsonObject(jsonString);
            boolean isJsonArray = isJsonArray(jsonString);

            if (!isJsonObject && !isJsonArray) {
                return StringUtils.EMPTY;
            }

            if (isJsonObject) {
                return jsonObjectHelper(jsonString, maskKeys);
            }

            return jsonArrayHelper(jsonString, maskKeys);

        } catch (Exception e) {
            return StringUtils.EMPTY;
        }
    }
	
     /**
      * String类型的JSONObject
      * @param jsonString
      * @param maskKeys
      * @return
      */
	  private static Object jsonObjectHelper(String jsonString, String... maskKeys) {
	        JSONObject originalJsonObject = JSONObject.parseObject(jsonString);
	        if (null != originalJsonObject) {
	            Set<String> keySets = originalJsonObject.keySet();
	            for (String key : keySets) {
	                for (String maskKey : maskKeys) {
	                    if (key.equalsIgnoreCase(maskKey)) {
	                        originalJsonObject.put(key, maskByKey(key, originalJsonObject.get(key)));
	                    
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Dabria_ly/article/details/86616523

智能推荐

JAVA毕设项目物料生产管理系统(java+VUE+Mybatis+Maven+Mysql)_java物料管理系统-程序员宅基地

文章浏览阅读210次。Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。JAVA + mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。2. 前端:vue+css+javascript+jQuery+easyUI+highcharts。JAVA毕设项目物料生产管理系统(java+VUE+Mybatis+Maven+Mysql)_java物料管理系统

【MIMO雷达】压缩感知大规模MIMO雷达仿真【含Matlab源码 3858期】-程序员宅基地

文章浏览阅读229次,点赞3次,收藏9次。压缩感知大规模MIMO雷达仿真完整的代码,方可运行;可提供运行操作视频!适合小白!

技术部门Leader是不是一定要技术大牛担任?_技术总监必须懂技术吗-程序员宅基地

文章浏览阅读687次,点赞17次,收藏30次。还是以阿里云举例,王坚博士好歹也是获得过【中国IT十大杰出青年】并在微软证明过自己的技术大师,但真正帮助阿里云落地的人却是马云——一个完全不懂技术的英语教师。如果大家关注过阿里云的发展历程,在早期是马云亲自要求当时阿里金融的系统架构必须建立在阿里云基础上,即便那个时候阿里云非常的不稳定。说实在话,我觉得马云是有大智慧的战略家,他虽然不懂技术,但却在技术这条路上看的很远。有句话叫做“条条大路通罗马”,在某一个方面有深入了解的人往往会触类旁通——哪怕并非他的专业。

GitHub下载项目加速(升华版)_雨花阁github-程序员宅基地

文章浏览阅读1.8k次。现状:一个痛点众所周知,GitHub 是一个巨大的开源宝库,以及程序员和编程爱好者的聚集地,包括我之前推荐的诸多优秀的开源项目全部都是位于 GitHub 上。但是每当我们看到优秀的开源项目,准备去下(bai)载(piao)时,会发现 git clone的速度异常之慢!就我个人而言,在我家里 200M 移动宽带的环境下,我克隆开源项目就没发现速度大于过 20.00KiB/s的时候,这简直太难受了..._雨花阁github

你一定能看懂的tf.nn.bidirectional_dynamic_rnn()详解-程序员宅基地

文章浏览阅读705次。bidirectional_dynamic_rnn的使用详解_tf.nn.bidirectional_dynamic_rnn

使用c语言实现100-200之内的素数-程序员宅基地

文章浏览阅读72次。【代码】使用c语言实现100-200之内的素数。

随便推点

【IDA pro常见问题】IDA pro 运行闪退 - Fatal error before kernel init - 应用程序"ida"不能打开_ida打开exe文件的时候提示the procrssor-程序员宅基地

文章浏览阅读3.7k次。系统环境Mac OS 10.12.6问题描述: 拿到一个Android应用,需要对其进行安全测试,使用IDA pro对SO文件进行调试,日常打开IDA pro竟然闪退了,然后还给了一个错误提示“应用程序"ida"不能打开。”看到这个信息瞬间一万个MMP从脑子中奔腾而过,给的这个信息也太少了吧。然后找到IDA pro的可执行文件 "IDA pro安装路径下的idabin目录下的id..._ida打开exe文件的时候提示the procrssor

微软搭建零售新媒体创意工作室大举抢占数字营销广告市场-程序员宅基地

文章浏览阅读6.4k次,点赞16次,收藏5次。由于新质生产力所推动的新的营销体系,方法和工具也必将落地。我之前一直谈到的ESG营销,或许从新质生产力的角度,会推动更多商业模式的变更,促进新的销售力的自我更新迭代,形成新的企业营销战略。且看微软如何借助新媒体数字化营销技术,杀入数字化营销市场!

.NET WebAPI 微信网页授权的实现(一)前端篇_.net8 微信授权-程序员宅基地

文章浏览阅读4.8k次,点赞2次,收藏9次。写在前面微信网页授权登陆是微信网页开发的第一步,由于框架限制需要使用.NET WebAPI的前后端分离模式进行开发,所以经过几天的摸索,写了这个简单的微信网页授权的实现Demo,本篇文章为微信公众号的配置与前端页面的实现,后端部分在下一篇文章中,链接也在文章底部。特别说明,本文章适用于微信内网页应用的授权登陆,不适用于普通网站的扫码授权登录,将在后续文章中进行论述。后端篇:https://..._.net8 微信授权

你真的了解C语言吗 (深度剖析C语言第一期)_c语言深度 剖析第一-程序员宅基地

文章浏览阅读830次,点赞7次,收藏27次。首先我们需要了解具有存储能力的设备,寄存器,cache,内存,硬盘,软盘……距离CPU越近的存储单元,效率越高,单价成本越高。距离CPU越远的存储单元,效率越低,单价成本越低。对于任何一种硬件而言,它都充当这自己上游硬件的缓存,因此,CPU访问数据的时候以最小的成本达到最高的效率。register修饰变量register修饰变量就是尽量将该变量放入CPU的寄存器中,从而达到提高效率的目的。哪些变量适合用register修饰呢?1.局部变量。

简述生产车间调度优化问题-程序员宅基地

文章浏览阅读184次。介绍了车间调度问题的分类、常用基本模型,和主流的求解方法

Xcode创建的工程使用xcodebuild命令行编译_dvtcoredeviceenabledstate: dvtcoredeviceenabledsta-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏6次。Xcode创建的工程使用xcodebuild命令行编译1、确保xcodebuild能够正常运行如果使用xcodebuild命令出现如下错误:could not stat active Xcode path '/Volumes/Xcode/Xcode.app/Contents/Developer'. (No such file or directory)解决办法:xcode-_dvtcoredeviceenabledstate: dvtcoredeviceenabledstate_disabled set via user d

推荐文章

热门文章

相关标签