From a218ccaadff80203bcf82f251f0d448449858ac5 Mon Sep 17 00:00:00 2001
From: DESKTOP-71BH0QO\L、ming <172680469@qq.com>
Date: 星期五, 02 四月 2021 09:41:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/helper/encrypt/DoEncrytDecrypt.java |   79 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 79 insertions(+), 0 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/helper/encrypt/DoEncrytDecrypt.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/helper/encrypt/DoEncrytDecrypt.java
new file mode 100644
index 0000000..d67c1bb
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/helper/encrypt/DoEncrytDecrypt.java
@@ -0,0 +1,79 @@
+package com.panzhihua.common.model.helper.encrypt;
+
+import com.panzhihua.common.model.helper.AESUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+
+/***
+ * 默认实现: AES 128 加密、解密
+ * 可自定义实现{@link IEncryptDecrypt }接口
+ *
+ * @author cedoo
+ * @since 2021-4-1 10:40:52
+ */
+@Slf4j
+@Component
+public class DoEncrytDecrypt implements IEncryptDecrypt{
+
+    @Value("${domain.aesKey:}")
+    private String aesKey;
+
+    @Override
+    public <T> T encrypt(Field[] declaredFields, T parameterObject) throws IllegalAccessException {
+        for (Field field : declaredFields) {
+            if (field.getType() == String.class) {
+                field.setAccessible(true);
+                for (Annotation annotation : field.getAnnotations()) {
+                    if (annotation.annotationType() == EncryptDecryptField.class || annotation.annotationType() == EncryptQuery.class) {
+                        log.debug("加密字段:" + field.getName());
+                        Object fieldVal = field.get(parameterObject);
+                        if(fieldVal!=null) {
+                            try {
+                                String encryptedStr = AESUtil.encrypt128(fieldVal.toString(), aesKey);
+                                field.set(parameterObject, encryptedStr);
+                            }catch (Exception e){
+                                log.debug("加密失败");
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return parameterObject;
+    }
+
+    @Override
+    public <T> T decrypt(T result) throws IllegalAccessException {
+
+        for (Field field : result.getClass().getDeclaredFields()) {
+            try {
+                field.setAccessible(true);
+                if (field.get(result) != null) {
+                    for (Annotation annotation : field.getAnnotations()) {
+                        if (annotation.annotationType() == EncryptDecryptField.class) {
+                            log.debug("解密密字段:" + field.getName());
+                            String fieldVal = field.get(result).toString();
+                            try {
+                                String decryptVal = AESUtil.decrypt128(fieldVal, aesKey);
+                                field.set(result, decryptVal != null ? decryptVal : fieldVal);
+                            }catch (Exception e){
+                                /**
+                                 * 兼容原始未加密数据
+                                 */
+                                field.set(result, fieldVal);
+                            }
+                        }
+                    }
+                }
+            } catch (IllegalAccessException e) {
+                throw e;
+            }
+        }
+        return result;
+    }
+
+}

--
Gitblit v1.7.1