提交 8eae3c9f authored 作者:  狄熙卜's avatar 狄熙卜

预置加解密配置模板v1.0

上级 de5939e7
package cn.gtmap.bdcdj.core.encrypt;
import cn.gtmap.bdcdj.core.encrypt.config.BaseConfig;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.dom4j.Document;
......@@ -8,6 +9,7 @@ import org.dom4j.io.SAXReader;
import org.dom4j.tree.DefaultText;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import java.util.ArrayList;
......@@ -22,7 +24,8 @@ public class DbEncryptXmlConfig {
public Resource getConfigUrl() {
return configUrl;
}
@Autowired
List<BaseConfig> baseConfig;
//全局加解密字段
private List<String> globalEnableFields ;
//map中全局加解密字段的例外(在例外中不加解密)
......@@ -41,6 +44,15 @@ public class DbEncryptXmlConfig {
private List<String> interfaceEncryptList;
private String interfaceSm2DecodeKey;//接口加解密时,sm2解密的私钥
private String interfaceSm2EncodeKey;//接口加解密时,sm2加密的公钥
private List<String> baseConfigOptions;
public List<String> getBaseConfigOptions() {
if(CollectionUtils.isNotEmpty(this.baseConfigOptions)){
return this.baseConfigOptions;
}else{
this.baseConfigOptions = getArrFields("BaseConfigOptions");
return this.baseConfigOptions;
}
}
public String getInterfaceSm2DecodeKey(){
if(!StringUtils.isBlank(this.interfaceSm2DecodeKey)){
return this.interfaceSm2DecodeKey;
......@@ -217,7 +229,9 @@ public class DbEncryptXmlConfig {
if(StringUtils.isNotBlank(value)){
String[] split = value.split(",");
if(split != null && split.length > 0){
result = Arrays.asList(split);
for (String s : split) {
result.add(s);
}
}
}
}
......@@ -307,4 +321,48 @@ public class DbEncryptXmlConfig {
}
return false;
}
/**
* 从java文件中读取预置的加解密字段
*/
public void setBaseConfigFileds() {
List<String> baseConfigOptions = this.getBaseConfigOptions();
if(CollectionUtils.isNotEmpty(baseConfig)){
for (BaseConfig config : baseConfig) {
String simpleName = config.getClass().getSimpleName().replace("Config", "").toLowerCase();
//当配置中包含预置加密字段时,才读预置字段
if(baseConfigOptions.contains(simpleName)){
if(CollectionUtils.isNotEmpty(config.getGlobalEnableFields())){
if(CollectionUtils.isEmpty(globalEnableFields)){
globalEnableFields = new ArrayList<String>();
}
globalEnableFields.addAll(config.getGlobalEnableFields());
}
if(CollectionUtils.isNotEmpty(config.getSqlFileds())){
if(CollectionUtils.isEmpty(sqlFileds)){
sqlFileds = new ArrayList<Map>();
}
sqlFileds.addAll(config.getSqlFileds());
}
if(CollectionUtils.isNotEmpty(config.getSqlEncryptFileds())){
if(CollectionUtils.isEmpty(sqlEncryptFileds)){
sqlEncryptFileds = new ArrayList<Map>();
}
sqlEncryptFileds.addAll(config.getSqlEncryptFileds());
}
if(CollectionUtils.isNotEmpty(config.getSqlDecryptFileds())){
if(CollectionUtils.isEmpty(sqlDecryptFileds)){
sqlDecryptFileds = new ArrayList<Map>();
}
sqlDecryptFileds.addAll(config.getSqlDecryptFileds());
}
if(CollectionUtils.isNotEmpty(config.getEntityFileds())){
if(CollectionUtils.isEmpty(entityFileds)){
entityFileds = new ArrayList<Map>();
}
entityFileds.addAll(config.getEntityFileds());
}
}
}
}
}
}
......@@ -107,7 +107,16 @@ public class EncryptInterceptor implements Interceptor {
if(StringUtils.isNotBlank(encoding)){
this.cryptProperties.setEncoding(encoding);
}
dbEncryptXmlConfig.getGlobalEnableFields();
dbEncryptXmlConfig.getGlobalDisableMapFields();
dbEncryptXmlConfig.getGlobalDisableEntityFields();
dbEncryptXmlConfig.getSqlFileds();
dbEncryptXmlConfig.getSqlEncryptFileds();
dbEncryptXmlConfig.getSqlFileds();
dbEncryptXmlConfig.getSqlDecryptFileds();
dbEncryptXmlConfig.getEntityFileds();
//添加预置的字段
dbEncryptXmlConfig.setBaseConfigFileds();
this.cryptProperties.setGlobalEnableFields(dbEncryptXmlConfig.getGlobalEnableFields());
this.cryptProperties.setGlobalDisableMapFields(dbEncryptXmlConfig.getGlobalDisableMapFields());
this.cryptProperties.setGlobalDisableEntityFields(dbEncryptXmlConfig.getGlobalDisableEntityFields());
......
package cn.gtmap.bdcdj.core.encrypt.config;
import java.util.List;
import java.util.Map;
/**
* 预置字段,可以通过在BaseConfigOptions配置中配置直接添加预设好的加解密字段
* 出于统一优先级设计考虑,目前设计预置字段只进行添加处理,没有排除例外字段的功能
*/
public interface BaseConfig {
List<String> getGlobalEnableFields();
List<Map> getSqlFileds();
List<Map> getSqlEncryptFileds();
List<Map> getSqlDecryptFileds();
List<Map> getEntityFileds();
}
package cn.gtmap.bdcdj.core.encrypt.config;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Component
public class QlrConfig implements BaseConfig {
@Override
public List<String> getGlobalEnableFields() {
List<String> globalEnableFields = new ArrayList<String>();
globalEnableFields.add("qlr");
globalEnableFields.add("qlrmc");
globalEnableFields.add("qlrzjh");
return globalEnableFields;
}
@Override
public List<Map> getSqlFileds() {
return null;
}
@Override
public List<Map> getSqlEncryptFileds() {
return null;
}
@Override
public List<Map> getSqlDecryptFileds() {
return null;
}
@Override
public List<Map> getEntityFileds() {
return null;
}
}
package cn.gtmap.bdcdj.core.encrypt.config;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Component
public class QlrlxdhConfig implements BaseConfig{
@Override
public List<String> getGlobalEnableFields() {
List<String> globalEnableFields = new ArrayList<String>();
globalEnableFields.add("qlrlxdh");
return globalEnableFields;
}
@Override
public List<Map> getSqlFileds() {
return null;
}
@Override
public List<Map> getSqlEncryptFileds() {
return null;
}
@Override
public List<Map> getSqlDecryptFileds() {
return null;
}
@Override
public List<Map> getEntityFileds() {
return null;
}
}
package cn.gtmap.bdcdj.core.encrypt.config;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Component
public class ZlConfig implements BaseConfig{
@Override
public List<String> getGlobalEnableFields() {
List<String> globalEnableFields = new ArrayList<String>();
globalEnableFields.add("zl");
return globalEnableFields;
}
@Override
public List<Map> getSqlFileds() {
return null;
}
@Override
public List<Map> getSqlEncryptFileds() {
return null;
}
@Override
public List<Map> getSqlDecryptFileds() {
return null;
}
@Override
public List<Map> getEntityFileds() {
return null;
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论