数据脱敏

数据脱敏工具类(包含手机号,银行卡号,邮箱,中文名称等)

纵然是瞬间 提交于 2020-01-19 03:57:44
针对客户一些敏感信息做脱敏特殊处理,直接上代码吧! package com.dcorepay.cloudpay.web.tenant.web.utils; import com.dcorepay.cloudpay.common.util.Utils; import org.apache.commons.lang3.StringUtils; /** * @author harainye * @description 隐藏数据工具类 * @date 2019年12月05日 11:20:35 */ public class HideDataUtils { /** * [卡号] 前4位+********+后4位,其余隐藏为*号 * <例子:6229**********1115> * @param cardNo 身份证号、银行卡号、证件编号 * @return 小于等于8位的直接返回 */ public static String hideCarNo(String cardNo) { if (Utils.isEmpty(cardNo)) { return ""; } if (cardNo.length() <= 8) { return cardNo; } int length = cardNo.length(); return cardNo.substring(0, 4).concat

Java 数据脱敏

不问归期 提交于 2019-12-18 18:29:33
数据脱敏 数据脱敏又称数据去隐私化或数据变形,是在给定的规则、策略下对敏感数据进行变换、修改的技术机制,能够在很大程度上解决敏感数据在非可信环境中使用的问题。根据数据保护规范和脱敏策略.对业务数据中的敏感信息实施自动变形.实现对敏感信息的隐藏。 脱敏方法 项目是在controller层进行脱敏,查阅google和github有两种较为方便的方法 一种是基于注解 desensitized基于注解的形式进行脱敏 GitHub 一种是基于框架本质上还是注解,但是已经封装好了,当然还提供fastjson的方式进行脱敏 sensitive框架进行脱敏 GitHub 由于项目原因不想引入框架,所以使用基于注解的方式 实现 新建枚举类型,标明是何种脱敏方式 package com.blgroup.vision.common.enums; /** * @program: blgroup-scloud-web * @description: 脱敏枚举 * @author: ingxx * @create: 2019-12-17 14:32 **/ public enum SensitiveTypeEnum { /** * 中文名 */ CHINESE_NAME, /** * 身份证号 */ ID_CARD, /** * 座机号 */ FIXED_PHONE, /** * 手机号 */ MOBILE

数据脱敏

。_饼干妹妹 提交于 2019-12-05 17:06:14
1 import cn.hutool.core.util.StrUtil; 2 3 /** 4 * 脱敏工具类 5 **/ 6 public class DesensitizedUtils { 7 8 /** 9 * 对字符串进行脱敏操作 10 * 11 * @param origin 原始字符串 12 * @param prefixNoMaskLen 左侧需要保留几位明文字段 13 * @param suffixNoMaskLen 右侧需要保留几位明文字段 14 * @param maskStr 用于遮罩的字符串, 如'*' 15 * @return 脱敏后结果 16 */ 17 public static String desValue(String origin, int prefixNoMaskLen, int suffixNoMaskLen, String maskStr) { 18 if (origin == null) { 19 return null; 20 } 21 22 StringBuilder sb = new StringBuilder(); 23 for (int i = 0, n = origin.length(); i < n; i++) { 24 if (i < prefixNoMaskLen) { 25 sb.append(origin

SQLServer数据脱敏

匿名 (未验证) 提交于 2019-12-02 23:48:02
  SQLServer有各种加密方式,比如使用加密函数进行数据列加密,Dynamic Data Masking(动态数据屏蔽),但是都达不到数据脱敏的效果,特别是动态数据屏蔽,可以强行绕过加密。而数据脱敏的效果应该是在从生产数据库迁移数据库到其它环境时,屏蔽掉敏感数据,而不改变其数据类型。对比Oracle的Data Masking,SQLServer在新版本的Management studio中推出了静态数据屏蔽的功能。本文就是针对这个功能的详细介绍。   使用场景:            工作原理:    静态数据屏蔽发生在列级别。 用户选择他们希望屏蔽的列,并且对于所选的每列,他们希望应用哪个屏蔽功能。 有几种掩蔽功能可供选择, 它们在掩蔽函数中有详细描述。   然后,静态数据屏蔽将创建数据库的副本。 对于Azure SQL数据库,通过复制功能执行复制。 对于SQL Server,它通过备份操作执行,然后执行还原操作。 从那里,对于每列,静态数据掩蔽开始根据所选择的掩蔽功能用掩蔽后数据替换预掩蔽数据。   替换在存储级别完成, 因此在静态数据屏蔽完成后,无法从数据库的屏蔽副本中检索预屏蔽数据。      操作步骤:   1. 启动SSMS, 连接到您的数据库。 在左侧的“对象资源管理器”窗格中,展开“数据库”文件夹。 右键单击要屏蔽的数据库, 左键单击“任务”,

手机号、身份证号脱敏

匿名 (未验证) 提交于 2019-12-02 23:36:01
版权声明:技术有限,如有错误,请指出谢谢 作者:赵先森 出处:https://blog.csdn.net/weixin_37264997 版权所有,欢迎保留原文链接进行转载:) https://blog.csdn.net/weixin_37264997/article/details/90639074 为了保护客户隐私时常会用到脱敏等操作,下面就介绍几种数据脱敏的方式 JAVA public static void main ( String [ ] args ) { String phone = "18888888888" ; String phoneNumber = phone . substring ( 0 , 3 ) + "****" + phone . substring ( 7 , phone . length ( ) ) ; System . out . println ( "phone总长度:" + phone . length ( ) ) ; System . out . println ( "phone前3位:" + phone . substring ( 0 , 3 ) ) ; System . out . println ( "phone中4位:" + phone . substring ( 3 , 7 ) ) ; System . out .

前端js手机号脱敏加密

元气小坏坏 提交于 2019-12-02 08:40:19
前端js手机号脱敏加密 关于数据敏感的问题.可能在开发过程中经常遇到,有时候后端传给前端的明文数据我们需要在界面上进行脱密加密,以达到掩耳盗铃的目的,加密的实现方式有很多,主要是关于字符串的处理. 使用js的 slice() 字符串切割方法,拿到字符串之后进行处理 var str = '18127446988' var enStr = str . slice ( 0 , 3 ) + '****' + str . slice ( str . length - 4 ) console . log ( enStr ) // 181****6988 使用js中的 substring() 方法进行字符串处理 var str = '18127446988' var enStr = str . substring ( 0 , 3 ) + '****' + str . substring ( str . length - 4 ) console . log ( enStr ) // 181****6988 使用正则匹配处理 var str = '18127446988' var enStr = str . replace ( /(\d{3})\d*(\d{4})/ , "$1****$2" ) console . log ( enStr ) // 181****6988 虽然实现的方式很多

php 数据脱敏显示

微笑、不失礼 提交于 2019-11-29 07:04:34
/** * 数据脱敏 * @param $string 需要脱敏值 * @param int $start 开始 * @param int $length 结束 * @param string $re 脱敏替代符号 * @return bool|string * 例子: * dataDesensitization('13126989876', 3, 4); //131****9876 * dataDesensitization('张三四', 0, -1); //**四 */ function dataDesensitization($string, $start = 0, $length = 0, $re = '*') { if (empty($string)){ return false; } $strarr = array(); $mb_strlen = mb_strlen($string); while ($mb_strlen) {//循环把字符串变为数组 $strarr[] = mb_substr($string, 0, 1, 'utf8'); $string = mb_substr($string, 1, $mb_strlen, 'utf8'); $mb_strlen = mb_strlen($string); } $strlen = count($strarr);

【开发笔记】- 数据脱敏

时光怂恿深爱的人放手 提交于 2019-11-29 07:04:24
针对姓名、电话、地址、邮箱等敏感信息进行脱敏操作,代码如下: 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

数据脱敏工具类

风格不统一 提交于 2019-11-29 07:04:16
从别的地方copy来的,用着还可以。 private static final int SIZE = 6; private static final String SYMBOL = "*"; public static void main(String[] args) { String s = ""; String conceal = toConceal(s); System.out.println(conceal); } public static String toConceal(String value) { if (null == value || "".equals(value)) { return value; } int len = value.length(); int pamaone = len / 2; int pamatwo = pamaone - 1; int pamathree = len % 2; StringBuffer stringBuilder = new StringBuffer(); if (len <= 2) { if (pamathree == 1) { return SYMBOL; } stringBuilder.append(SYMBOL); stringBuilder.append(value.charAt(len - 1)); }

数据脱敏工具类

狂风中的少年 提交于 2019-11-29 07:04:02
public final class SensitiveInfoUtils { /** * [身份证号] 显示前六位,最后两位,其他隐藏。共计18位或者15位。<例子:152728*********62> * * @param num * @return */ public static String idCardNum(String num) { if (StringUtils.isBlank(num)) { return ""; } return StringUtils.left(num, 6).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(num, 2), StringUtils.length(num), "*"), "******")); } /** * [手机号码] 前三位,后两位,其他隐藏<例子:138********34> * * @param num * @return */ public static String mobilePhone(String num) { if (StringUtils.isBlank(num)) { return ""; } return StringUtils.left(num, 3).concat(StringUtils