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

技术标签: 字段加星*  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

智能推荐

QT 开发COM(ActiveX)组件基础介绍和方案验证

在创建组件对象时,客户程序调用COM库中的函数进行组件对象的创建工作,COM库的创建函数根据注册表的信息并调用组件程序的入口函数来创建组件对象。COM 既提供了组件之间进行交互的规范,也提供了实现交互的环境,因为组件对象之间交互的规范不依赖于任何特定的语言,所以,COM也可以是不同语言协作开发的一种标准。当另外的组件或者普通程序(即组件的客户程序)调用组件的功能时,它首先创建一个COM对象或者通过其他途径获得COM对象,然后通过该对象所实现的COM接口调用它所提供的服务。

【渝粤教育】广东开放大学 现代企业管理 形成性考核 (51)_下列说法错误的是 选择一项: a. 定量订货方式适合于品种数目少但占用资金大的b类-程序员宅基地

文章浏览阅读7.2k次。选择题题目:技术装备程度低、用人多、产品成本中活劳动消耗比重大的企业,属于() 企业。题目:市场渗透战略是由企业现有产品和( )结合而成的战略.题目:某牙膏厂原来只生产两面针药物牙膏,现在又增加牙刷生产,这属于( )。题目:在波士顿矩阵法中,( )类象限是指那些相对市场占有率较高和市场增长率较低的经营单位题目:以下哪种不是宏观环境分析考虑的因素( )题目:在《竞争战略》一书中提出了著名的五种竞争力量模型.题目:事业部制的缺点是与统一指挥原则相矛盾,容易产生职责不清的现象_下列说法错误的是 选择一项: a. 定量订货方式适合于品种数目少但占用资金大的b类

C/C++中CRT_c++ crt-程序员宅基地

文章浏览阅读4.1k次,点赞5次,收藏15次。本文转载自http://blog.sina.com.cn/s/blog_149e9d2ec0102wyvq.htmlCRT原先是指Microsoft开发的C Runtime Library,用于操作系统的开发及运行。后来在此基础上开发了C++ Runtime Library,所以现在CRT是指Microsoft开发的C/C++ Runtime Library。在VC的CRT/SRC目录下,可以..._c++ crt

C语言作业(四)-程序员宅基地

文章浏览阅读70次。【代码】C语言作业(四)

JavaScript语法高亮库highlight.js使用_语法高亮js css文件-程序员宅基地

文章浏览阅读9.9k次。highlight.js是一款基于JavaScript的语法高亮库,目前支持125种编程语言,有63种可供选择的样式,而且能够做到语言自动识别,和目前主流的JS框架都能兼容,可以混合使用。这款高亮库可以用在博客系统中,其使用方法及其简单,几乎不需要任何学习成本,下面介绍highlight.js的使用。1.获取highlight.js库,用户可以从官网获取:地址:https://highlightjs_语法高亮js css文件

【笔记】strftime的使用方法-程序员宅基地

文章浏览阅读5.1k次。strftimestrftime是C语言标准库中用来格式化输出时间的的函数。下面是strftime的用法各参数意义代码使用示例#include<stdio.h>#include<time.h>#define print(s1, s2,s3) \ printf("%-20s%-30s%s\n",s1, s2,s3);int main(){ time_t rawtime; struct tm* timeinfo; char timE[80]; /

随便推点

c#语言开发app,C#开发Android App--03--创建第一个app--Hello World-程序员宅基地

文章浏览阅读9.3k次,点赞8次,收藏39次。知识点:第一个app,显示Helloworld一、创建一个空项目创建项目启动 Visual Studio。单击“文件”>“新建”>“项目”以创建新项目 。在“新建项目” 对话框中,单击“Android 应用” 模板。将新项目命名为Hello(Phoneword是微软示例,本人太懒,不改了),然后单击“确定” : 在“新 Android 应用” 对话框中,依次单击“BlankA..._c#开发app

探索Camera2Demo:一款深入理解Android Camera2 API的开源示例项目-程序员宅基地

文章浏览阅读267次,点赞5次,收藏9次。探索Camera2Demo:一款深入理解Android Camera2 API的开源示例项目项目地址:https://gitcode.com/wangshengyang1996/Camera2Demo项目简介Camera2Demo 是一个由wangshengyang1996开发并维护的Android应用示例,旨在帮助开发者更好地理解和使用Android的Camera2 API。该项目通过提供..._android camera2 demo

iOS10 适配、Xcode8配置总结①-程序员宅基地

文章浏览阅读121次。2019独角兽企业重金招聘Python工程师标准>>> ...

微信API证书过期,获取API证书_微信 apiv3证书 过期-程序员宅基地

文章浏览阅读10w+次。在做微信如:(退款、企业红包、企业付款)提现这些操作的时候,微信返回(具体哪个字段我忘记了)的信息是:证书过期,那么就需要重新获取证书,证书的获取前提条件:1:你需要有微信商户平台的商户号(类似电话号码的数字),和商户名称(比如公司名称)2:按照官方说明文档进行相应操作即可(按照这个做就行了)http://kf.qq.com/faq/161222NneAJf161222U7fARv.h..._微信 apiv3证书 过期

雷达探测项目仿真代码(Matlab代码实现)_探地雷达成像matlab-程序员宅基地

文章浏览阅读2.2k次。雷达探测是电磁威慑的重要组成。国外发达国家正从体系、平台、频段、架构、硬件、处理等方面开发新一代雷达技术。针对高超声速目标、弹道导弹、无人集群目标、隐身飞机等新型极高速、极隐身、极庞大目标,将以网络为基础,整合各类探测手段,实现对目标的全球预警、全程连续跟踪、全维协同精确打击,形成全域全时全维的体系化探测感知能力。对深空目标、临空目标、隐身目标、集群目标的探测研究新型威胁目标是驱动雷达探测技术前进的原动力之一,而新时期的新型威胁目标呈现“高、低、快、慢、小、隐、群”等特征。_探地雷达成像matlab

kali 安装取证工具volatility_kali安装volatility-程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏12次。计算机取证 volatility_kali安装volatility

推荐文章

热门文章

相关标签