修改如下:

1.默认加密算法修改为Base64,并且默认关闭该功能
2.加密配置类中的注解移到类上
3.错误日志记录采用日志框架来处理异常内容
This commit is contained in:
mayuanfei 2023-01-16 16:38:08 +08:00
parent c437089b29
commit 3fd825cf0c
6 changed files with 25 additions and 20 deletions

View File

@ -186,16 +186,16 @@ mybatis-plus:
# 数据加密
mybatis-encryptor:
# 是否开启加密
enabled: true
enabled: false
# 默认加密算法
algorithm: aes
algorithm: base64
# 安全秘钥。对称算法的秘钥。如AESSM4
password: QBcc3SHK2G4ijyfl5XQ7@2g!N2j2jRDR
# password: QBcc3SHK2G4ijyfl5XQ7@2g!N2j2jRDR
# # 公私钥。非对称算法的公私钥SM2RSA
# publicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCDt41GIcWvY6/tpjOLoWY78Oy00uWcNbMRG/8DRoS79/h2D+pV8uxV+0ezaN+fBFCZnK8TdJcPeU4EnNRUh/8HEY33KFvZ700n+Gj5BHUUDKzx3UVFNuF49UI/yoJ8rz6VQQHO79KK89VwmSMO77Tfee1ofe0STY6IwMt/MwaoKwIDAQAB
# privateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIO3jUYhxa9jr+2mM4uhZjvw7LTS5Zw1sxEb/wNGhLv3+HYP6lXy7FX7R7No358EUJmcrxN0lw95TgSc1FSH/wcRjfcoW9nvTSf4aPkEdRQMrPHdRUU24Xj1Qj/KgnyvPpVBAc7v0orz1XCZIw7vtN957Wh97RJNjojAy38zBqgrAgMBAAECgYAkXx4qvI6rFNryw88+Am6JpMioUghHb2ioE9QCYomqohnA+DocS71JLN8qwo3lijp7gJGzzKEeC8Aoc+oKAZfBQQwPP0K/ql+NcLdlqNAr+XyzkZrLJD/BfluQ6mXI23tjonWnPPZ1Et9HC3zXRQPiuh7Ff6UoqatTMI3OIbSyuQJBAPbaJpVYmIsWJdpvaAC6hcGgR/vbG9yX8VphPn8/2wsm2MmQrRkUoKkudE/veX3KQjGikDwo9+bT6aBl+nn2DUUCQQCImSGZFNcGqhMLyRGVogP6fh0YZSEQAhFbZ69nQmplqbie+dREhODH5Vs5F0C2aL5iSR/UaIDkNEA1auX7x56vAkAFWjON927PTTqi4tmBconl6eDFsDmJbe34xLUDM1I/iqcWr8FhEtZs9Knm9c1PkewfgWPZOhYt9hhRtwRYUqJ1AkAPvQ0I9US9KNVe80DKa8tnjiZODEDd9k8HqA+mpxlZM0/pSUGyz1iSz5NOJaa4HaNp8aDwOUY4hOis/u8Wrm5TAkEA00YeUsaXlMyMF/5pjols44tXb54AjAC2mH66pz9JsKg7pKpWVOpEV5rMY58CGZHWau69vGLZnCd1coeMw77YAQ==
# # 编码方式base64/hex。默认base64
encode: base64
# encode: base64
# Swagger配置
swagger:

View File

@ -19,7 +19,7 @@ public @interface EncryptField {
/**
* 加密算法
*/
AlgorithmType algorithm() default AlgorithmType.AES;
AlgorithmType algorithm() default AlgorithmType.BASE64;
/**
* 秘钥AESSM4需要

View File

@ -2,6 +2,8 @@ package com.ruoyi.framework.config;
import com.ruoyi.framework.config.properties.EncryptorProperties;
import com.ruoyi.framework.encrypt.EncryptorManager;
import com.ruoyi.framework.encrypt.MybatisDecryptInterceptor;
import com.ruoyi.framework.encrypt.MybatisEncryptInterceptor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@ -13,13 +15,23 @@ import org.springframework.context.annotation.Configuration;
* @date 2023-01-11 10:03
*/
@Configuration
@ConditionalOnProperty(value = "mybatis-encryptor.enabled", havingValue = "true")
public class EncryptorConfig {
@Bean
@ConditionalOnProperty(value = "mybatis-encryptor.enabled", havingValue = "true")
public EncryptorManager mybatisCryptHandler(EncryptorProperties properties) {
EncryptorManager encryptorManager = new EncryptorManager();
encryptorManager.registAndGetEncryptor(properties);
return encryptorManager;
}
@Bean
public MybatisEncryptInterceptor mybatisEncryptInterceptor(EncryptorProperties properties) {
return new MybatisEncryptInterceptor();
}
@Bean
public MybatisDecryptInterceptor mybatisDecryptInterceptor(EncryptorProperties properties) {
return new MybatisDecryptInterceptor();
}
}

View File

@ -53,7 +53,7 @@ public class EncryptorManager {
encryptorMap.put(encryptorKey, new Sm4Encryptor(properties.getPassword()));
break;
default:
AesEncryptor defaultEncryptor = new AesEncryptor(properties.getPassword());
Base64Encryptor defaultEncryptor = new Base64Encryptor();
encryptorMap.put(encryptorKey, defaultEncryptor);
}
return encryptorMap.get(encryptorKey);

View File

@ -1,7 +1,6 @@
package com.ruoyi.framework.encrypt;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.exceptions.ExceptionUtil;
import com.ruoyi.common.annotation.EncryptField;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
@ -9,12 +8,13 @@ import com.ruoyi.framework.config.properties.EncryptorProperties;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.executor.resultset.ResultSetHandler;
import org.apache.ibatis.plugin.*;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
import java.lang.reflect.Field;
import java.sql.Statement;
import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
/**
* 出参解密拦截器
@ -28,8 +28,6 @@ import java.util.*;
method = "handleResultSets",
args = {Statement.class})
})
@ConditionalOnProperty(value = "mybatis-encryptor.enabled", havingValue = "true")
@Component
public class MybatisDecryptInterceptor implements Interceptor {
private final EncryptorManager encryptorManager = SpringUtils.getBean(EncryptorManager.class);
@ -71,7 +69,7 @@ public class MybatisDecryptInterceptor implements Interceptor {
field.set(sourceObject, this.decryptField(String.valueOf(field.get(sourceObject)), field));
}
} catch (Exception e) {
log.error("处理加密字段时出错:{}", ExceptionUtil.getSimpleMessage(e));
log.error("处理解密字段时出错", e);
}
}

View File

@ -1,7 +1,6 @@
package com.ruoyi.framework.encrypt;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.annotation.EncryptField;
import com.ruoyi.common.utils.StringUtils;
@ -13,8 +12,6 @@ import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.plugin.Intercepts;
import org.apache.ibatis.plugin.Invocation;
import org.apache.ibatis.plugin.Signature;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
import java.lang.reflect.Field;
import java.sql.PreparedStatement;
@ -35,8 +32,6 @@ import java.util.Set;
method = "setParameters",
args = {PreparedStatement.class})
})
@ConditionalOnProperty(value = "mybatis-encryptor.enabled", havingValue = "true")
@Component
public class MybatisEncryptInterceptor implements Interceptor {
private final EncryptorManager encryptorManager = SpringUtils.getBean(EncryptorManager.class);
@ -85,7 +80,7 @@ public class MybatisEncryptInterceptor implements Interceptor {
field.set(sourceObject, this.encryptField(String.valueOf(field.get(sourceObject)), field));
}
} catch (Exception e) {
log.error("处理加密字段时出错{}", ExceptionUtil.getSimpleMessage(e));
log.error("处理加密字段时出错", e);
}
}