公司有个需求,人员身份证号码入库时需要加密,取出时需要解密。由于系统中没有设计加密解密方式,所以需业务中单独处理。
之前考虑加拦截器,后来发现需求不会很大,这种方式太复杂没有必要。
首先添加一个类,处理加密解密操作。
public class EncryptConverter implements AttributeConverter<String, String> {
/**
* 加密.
*/
@Override
public String convertToDatabaseColumn(String text) {
// ... 加解密实现
if(StringUtil.isEmpty(text)){
return "";
}else{
return SecurityUtil.doEncrypt(text);
}
}
/**
* 解密.
*/
@Override
public String convertToEntityAttribute(String s) {
// ... 加解密实现
if(StringUtil.isEmpty(s)){
return "";
}else{
return SecurityUtil.doDecrypt(s);
}
}
}
然后在相应的实体中需要加密的字段上添加注解
@Convert(converter = EncryptConverter.class)
这样就完成了。