From 3fd825cf0c74d89d8df107fefd03bd0f981144d3 Mon Sep 17 00:00:00 2001 From: mayuanfei Date: Mon, 16 Jan 2023 16:38:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A6=82=E4=B8=8B=EF=BC=9A?= =?UTF-8?q?=201.=E9=BB=98=E8=AE=A4=E5=8A=A0=E5=AF=86=E7=AE=97=E6=B3=95?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BABase64=EF=BC=8C=E5=B9=B6=E4=B8=94?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=85=B3=E9=97=AD=E8=AF=A5=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=202.=E5=8A=A0=E5=AF=86=E9=85=8D=E7=BD=AE=E7=B1=BB=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E6=B3=A8=E8=A7=A3=E7=A7=BB=E5=88=B0=E7=B1=BB=E4=B8=8A?= =?UTF-8?q?=203.=E9=94=99=E8=AF=AF=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E9=87=87=E7=94=A8=E6=97=A5=E5=BF=97=E6=A1=86=E6=9E=B6=E6=9D=A5?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=BC=82=E5=B8=B8=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-admin/src/main/resources/application.yml | 8 ++++---- .../com/ruoyi/common/annotation/EncryptField.java | 2 +- .../ruoyi/framework/config/EncryptorConfig.java | 14 +++++++++++++- .../ruoyi/framework/encrypt/EncryptorManager.java | 2 +- .../encrypt/MybatisDecryptInterceptor.java | 12 +++++------- .../encrypt/MybatisEncryptInterceptor.java | 7 +------ 6 files changed, 25 insertions(+), 20 deletions(-) diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 5b5a31423..8eee2bdc2 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -186,16 +186,16 @@ mybatis-plus: # 数据加密 mybatis-encryptor: # 是否开启加密 - enabled: true + enabled: false # 默认加密算法 - algorithm: aes + algorithm: base64 # 安全秘钥。对称算法的秘钥。如:AES,SM4 - password: QBcc3SHK2G4ijyfl5XQ7@2g!N2j2jRDR +# password: QBcc3SHK2G4ijyfl5XQ7@2g!N2j2jRDR # # 公私钥。非对称算法的公私钥,如:SM2,RSA # 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: diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/EncryptField.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/EncryptField.java index 9cb9596f7..d44eb293c 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/EncryptField.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/EncryptField.java @@ -19,7 +19,7 @@ public @interface EncryptField { /** * 加密算法 */ - AlgorithmType algorithm() default AlgorithmType.AES; + AlgorithmType algorithm() default AlgorithmType.BASE64; /** * 秘钥。AES、SM4需要 diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/EncryptorConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/EncryptorConfig.java index ebc23241d..7d5d21a76 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/EncryptorConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/EncryptorConfig.java @@ -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(); + } } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/EncryptorManager.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/EncryptorManager.java index 0f269a589..0221a1ef5 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/EncryptorManager.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/EncryptorManager.java @@ -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); diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisDecryptInterceptor.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisDecryptInterceptor.java index e1e5efb0d..6d99f09c3 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisDecryptInterceptor.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisDecryptInterceptor.java @@ -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); } } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisEncryptInterceptor.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisEncryptInterceptor.java index b3afc187c..a8334f46f 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisEncryptInterceptor.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisEncryptInterceptor.java @@ -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); } }