diff --git a/continew-admin-common/pom.xml b/continew-admin-common/pom.xml
index c6d6c3ce..64730951 100644
--- a/continew-admin-common/pom.xml
+++ b/continew-admin-common/pom.xml
@@ -96,6 +96,12 @@
continew-starter-file-excel
+
+
+ top.charles7c.continew
+ continew-starter-security-crypto
+
+
top.charles7c.continew
diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/BCryptEncryptor.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/BCryptEncryptor.java
new file mode 100644
index 00000000..26ff301e
--- /dev/null
+++ b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/BCryptEncryptor.java
@@ -0,0 +1,29 @@
+package top.charles7c.continew.admin.common.config.mybatis;
+
+import org.springframework.security.crypto.password.PasswordEncoder;
+import top.charles7c.continew.starter.security.crypto.encryptor.IEncryptor;
+
+/**
+ * BCrypt 加/解密处理器(不可逆)
+ *
+ * @author Charles7c
+ * @since 2024/2/8 22:29
+ */
+public class BCryptEncryptor implements IEncryptor {
+
+ private final PasswordEncoder passwordEncoder;
+
+ public BCryptEncryptor(PasswordEncoder passwordEncoder) {
+ this.passwordEncoder = passwordEncoder;
+ }
+
+ @Override
+ public String encrypt(String plaintext, String password, String publicKey) throws Exception {
+ return passwordEncoder.encode(plaintext);
+ }
+
+ @Override
+ public String decrypt(String ciphertext, String password, String privateKey) throws Exception {
+ return ciphertext;
+ }
+}
diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/MybatisPlusConfiguration.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/MybatisPlusConfiguration.java
index 54905749..681ceed6 100644
--- a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/MybatisPlusConfiguration.java
+++ b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/MybatisPlusConfiguration.java
@@ -21,6 +21,7 @@ import org.springframework.context.annotation.Configuration;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import org.springframework.security.crypto.password.PasswordEncoder;
import top.charles7c.continew.starter.data.mybatis.plus.datapermission.DataPermissionFilter;
/**
@@ -47,4 +48,12 @@ public class MybatisPlusConfiguration {
public DataPermissionFilter dataPermissionFilter() {
return new DataPermissionFilterImpl();
}
+
+ /**
+ * BCrypt 加/解密处理器
+ */
+ @Bean
+ public BCryptEncryptor bCryptEncryptor(PasswordEncoder passwordEncoder) {
+ return new BCryptEncryptor(passwordEncoder);
+ }
}
diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/properties/RsaProperties.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/properties/RsaProperties.java
index ddf39acd..1e003fb9 100644
--- a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/properties/RsaProperties.java
+++ b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/properties/RsaProperties.java
@@ -31,7 +31,7 @@ public class RsaProperties {
public static final String PRIVATE_KEY;
static {
- PRIVATE_KEY = SpringUtil.getProperty("rsa.privateKey");
+ PRIVATE_KEY = SpringUtil.getProperty("continew-starter.security.crypto.private-key");
}
private RsaProperties() {
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/UserDO.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/UserDO.java
index 32361639..b135f53e 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/UserDO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/UserDO.java
@@ -16,16 +16,17 @@
package top.charles7c.continew.admin.system.model.entity;
-import java.io.Serial;
-import java.time.LocalDateTime;
-
-import lombok.Data;
-
import com.baomidou.mybatisplus.annotation.TableName;
-
+import lombok.Data;
+import top.charles7c.continew.admin.common.config.mybatis.BCryptEncryptor;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
import top.charles7c.continew.admin.common.enums.GenderEnum;
import top.charles7c.continew.starter.extension.crud.model.entity.BaseDO;
+import top.charles7c.continew.starter.security.crypto.annotation.FieldEncrypt;
+import top.charles7c.continew.starter.security.crypto.enums.Algorithm;
+
+import java.io.Serial;
+import java.time.LocalDateTime;
/**
* 用户实体
@@ -53,6 +54,7 @@ public class UserDO extends BaseDO {
/**
* 密码
*/
+ @FieldEncrypt(encryptor = BCryptEncryptor.class)
private String password;
/**
@@ -63,11 +65,13 @@ public class UserDO extends BaseDO {
/**
* 邮箱
*/
+ @FieldEncrypt(Algorithm.AES)
private String email;
/**
* 手机号码
*/
+ @FieldEncrypt(Algorithm.AES)
private String phone;
/**
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java
index a486e65c..ef3fd45e 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java
@@ -93,7 +93,6 @@ public class UserServiceImpl extends BaseServiceImpl