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