Java数据脱敏代码 java脱敏工具类怎么使用

利用Jackson序列化实现数据脱敏先看下jackson的@JsonSerialize注解 。
@JsonSerialize是jackson提供自定义序列化方法的注解,它有个using 属性,指定自定义序列化的执行类;
例如:
先自定义一个序列化类
@JsonSerialize注解的Java类示例
我们知道,springMVC是通过jackson这个序列化框架,当响应头的Content-Type是application/json;charset=UTF-8时 , 对返回的vo转换为json对象;所以,利用jackson的注解 , 这样就可以实现脱敏,下面我们对这个注解做一层封装 。
1.自定义序列化类,每当有需要脱敏的字段,例如,人名,邮箱,手机号等等,我们就创建一个这样的类,主要是制定一种脱敏的规则 。
2.定义脱敏注解
@JacksonAnnotationsInside 表示将注解捆绑;当我们在字段注解@EmailDesensitize ,等价于@JsonSerialize(using = EmailDesensitization.class);
Symbol类
3.vo字段加注解
4.测试
5.结果
【Java数据脱敏代码 java脱敏工具类怎么使用】 {"name":"强强","someEmail":"13********@qq.com"}
如何用Java实现数据脱敏尚学堂回答:敏感数据(如信用卡号码)、个人识别信息(如社会安全号码)、医疗诊断和甚至非个人的敏感数据(例如公司财务信息和知识产权)的曝光Java数据脱敏代码 , 是由于企业员工和外部人士滥用职权或工作失误所致 。”数据脱敏技术的目是通过从客户端隐藏敏感数据Java数据脱敏代码,以防止这些数据的滥用 。技术供应商提供Java数据脱敏代码了多种数据脱敏技术Java数据脱敏代码,例如用相似的字符替代一些字段;用屏蔽字符(例如Java数据脱敏代码 , ‘x’)替代字符;用虚拟的姓氏替代真正的姓氏 , 以及在数据库数列中对数据进行重组 。数据脱敏也被称为数据混淆、数据保密、数据消毒、数据扰频、数据匿名化和数据认证 。采用数据脱敏技术,可以帮助企业提高安全性和保密等级,以防止其数据被滥用 。与此同时,数据脱敏技术也可帮助企业满足安全性的规范要求,以及由管理/审计机关所要求的隐私标准 。
java数据脱敏了还能还原吗能 。java数据脱敏了是能还原Java数据脱敏代码的Java数据脱敏代码,需要管理数据的流入来还原脱敏前的数据 。Java是一门面向对象的编程语言Java数据脱敏代码,不仅吸收了C语言的各种优点Java数据脱敏代码,还摒弃了C语言里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征 。
java加密解密代码package com.cube.limail.util;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;/**
* 加密解密类
*/
publicclassEryptogram
{
privatestaticStringAlgorithm ="DES";
private String key="CB7A92E3D3491964";
//定义 加密算法,可用 DES,DESede,Blowfish
staticbooleandebug= false ;
/**
* 构造子注解.
*/
publicEryptogram ()
{
} /**
* 生成密钥
* @return byte[] 返回生成的密钥
* @throws exception 扔出异常.
*/
publicstaticbyte [] getSecretKey () throwsException
{
KeyGeneratorkeygen= KeyGenerator.getInstance (Algorithm );
SecretKeydeskey= keygen.generateKey ();
System.out.println ("生成密钥:" bytesToHexString (deskey.getEncoded ()));
if(debug ) System.out.println ("生成密钥:" bytesToHexString (deskey.getEncoded ()));
returndeskey.getEncoded ();
} /**
* 将指定的数据根据提供的密钥进行加密
* @param input 需要加密的数据
* @param key 密钥
* @return byte[] 加密后的数据
* @throws Exception
*/
publicstaticbyte [] encryptData (byte [] input ,byte [] key ) throwsException
{
SecretKeydeskey= newjavax.crypto.spec.SecretKeySpec (key ,Algorithm );
if(debug )
{
System.out.println ("加密前的二进串:" byte2hex (input ));
System.out.println ("加密前的字符串:" newString (input ));
} Cipherc1= Cipher.getInstance (Algorithm );
c1.init (Cipher.ENCRYPT_MODE ,deskey );
byte [] cipherByte =c1.doFinal (input );
if(debug ) System.out.println ("加密后的二进串:" byte2hex (cipherByte ));
returncipherByte ;
} /**
* 将给定的已加密的数据通过指定的密钥进行解密
* @param input 待解密的数据
* @param key 密钥
* @return byte[] 解密后的数据
* @throws Exception
*/
publicstaticbyte [] decryptData (byte [] input ,byte [] key ) throwsException
{
SecretKeydeskey= newjavax.crypto.spec.SecretKeySpec (key ,Algorithm );
if(debug ) System.out.println ("解密前的信息:" byte2hex (input ));
Cipherc1= Cipher.getInstance (Algorithm );
c1.init (Cipher.DECRYPT_MODE ,deskey );
byte [] clearByte =c1.doFinal (input );
if(debug )
{
System.out.println ("解密后的二进串:" byte2hex (clearByte ));
System.out.println ("解密后的字符串:" (newString (clearByte )));
} returnclearByte ;
} /**
* 字节码转换成16进制字符串
* @param byte[] b 输入要转换的字节码
* @return String 返回转换后的16进制字符串
*/
publicstaticStringbyte2hex (byte [] b )
{
Stringhs ="";
Stringstmp ="";
for(intn =0 ;n b.length ;n)
{
stmp =(java.lang.Integer.toHexString (b [n ]0XFF ));
if(stmp.length ()==1 ) hs =hs"0" stmp ;
elsehs =hsstmp ;
if(n b.length -1 ) hs =hs":";
} returnhs.toUpperCase ();
}
/**
* 字符串转成字节数组.
* @param hex 要转化的字符串.
* @return byte[] 返回转化后的字符串.
*/
public static byte[] hexStringToByte(String hex) {
int len = (hex.length() / 2);
byte[] result = new byte[len];
char[] achar = hex.toCharArray();
for (int i = 0; ilen; i) {
int pos = i * 2;
result[i] = (byte) (toByte(achar[pos])4 | toByte(achar[pos1]));
}
return result;
}
private static byte toByte(char c) {
byte b = (byte) "0123456789ABCDEF".indexOf(c);
return b;
}
/**
* 字节数组转成字符串.
* @param String 要转化的字符串.
* @return 返回转化后的字节数组.
*/
public static final String bytesToHexString(byte[] bArray) {
StringBuffer sb = new StringBuffer(bArray.length);
String sTemp;
for (int i = 0; ibArray.length; i) {
sTemp = Integer.toHexString(0xFFbArray[i]);
if (sTemp.length()2)
sb.append(0);
sb.append(sTemp.toUpperCase());
}
return sb.toString();
}
/**
* 从数据库中获取密钥.
* @param deptid 企业id.
* @return 要返回的字节数组.
* @throws Exception 可能抛出的异常.
*/
public static byte[] getSecretKey(long deptid) throws Exception {
byte[] key=null;
String value=https://www.04ip.com/post/null;
//CommDao dao=new CommDao();
// List list=dao.getRecordList("from Key k where k.deptid=" deptid);
//if(list.size()0){
//value=https://www.04ip.com/post/((com.csc.sale.bean.Key)list.get(0)).getKey();
value = "https://www.04ip.com/post/CB7A92E3D3491964";
key=hexStringToByte(value);
//}
if (debug)
System.out.println("密钥:"value);
return key;
}
public String encryptData2(String data) {
String en = null;
try {
byte[] key=hexStringToByte(this.key);
en = bytesToHexString(encryptData(data.getBytes(),key));
} catch (Exception e) {
e.printStackTrace();
}
return en;
}
public String decryptData2(String data) {
String de = null;
try {
byte[] key=hexStringToByte(this.key);
de = new String(decryptData(hexStringToByte(data),key));
} catch (Exception e) {
e.printStackTrace();
}
return de;
}
} 加密使用:byte[] key=Eryptogram.getSecretKey(deptid);//获得钥匙(字节数组)
byte[] tmp=Eryptogram.encryptData(password.getBytes(), key);//传入密码和钥匙,获得加密后的字节数组的密码
password=Eryptogram.bytesToHexString(tmp);//将字节数组转化为字符串,获得加密后的字符串密码解密与之差不多
关于Java数据脱敏代码和java脱敏工具类怎么使用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读