소스 검색

对象字典,业务表加密脱敏处理

skcj 2 년 전
부모
커밋
17a275fa2c

+ 23 - 0
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/interceptor/HeaderInterceptor.java

@@ -7,11 +7,15 @@ import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.security.auth.AuthUtil;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.system.api.model.LoginUser;
+import org.springframework.lang.Nullable;
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.AsyncHandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.HandlerAdapter;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.lang.reflect.Method;
 
 /**
  * 自定义请求头拦截器,将Header数据封装到线程变量中方便获取
@@ -21,6 +25,17 @@ import javax.servlet.http.HttpServletResponse;
  */
 public class HeaderInterceptor implements AsyncHandlerInterceptor
 {
+    public static Object getMethodValue(String methodName, Object object) {
+        try {
+            Method method = object.getClass().getMethod(methodName);
+            //设置对象的访问权限,保证对private的属性的访问
+            method.setAccessible(true);
+            return   method.invoke(object);
+        } catch (Exception e) {
+            System.out.println("反射取值异常"+e.toString());
+            return null;
+        }
+    }
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
     {
@@ -29,6 +44,9 @@ public class HeaderInterceptor implements AsyncHandlerInterceptor
             return true;
         }
 
+       // System.out.println(getMethodValue("getZw",null));
+
+
         SecurityContextHolder.setUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USER_ID));
         SecurityContextHolder.setUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USERNAME));
         SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY));
@@ -45,6 +63,11 @@ public class HeaderInterceptor implements AsyncHandlerInterceptor
         }
         return true;
     }
+    @Override
+    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
+      System.out.println(handler);
+    }
+
 
     @Override
     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)

+ 7 - 1
ruoyi-ui/src/api/tool/sm4.js

@@ -434,6 +434,7 @@ function getsm4Key() {
   if (token == null || token.length == 0) token = '1234567887654321'
   return CryptoJS.MD5(token).toString().toUpperCase().substr(16, 16)
 }
+
 function getsm4Iv() {
   var token = Cookies.get('Admin-Token').toString()
   if (token == null || token.length == 0) token = '1234567887654321'
@@ -494,7 +495,7 @@ function mask(str, type) {
     {
       return maskA(str, 2);
     }
-    else if (type == 6)//邮件地址
+    else if (type == 6)
     {
       return maskA(str, 1);
     }
@@ -574,6 +575,11 @@ export function encrypt_ECB(data) {
   s4.secretKey = getsm4Key();
   return s4.encryptData_ECB(data);
 }
+export function encrypt_ECBA(data,key) {
+  var s4 = new SM4Util();
+  s4.secretKey = key;
+  return s4.encryptData_ECB(data);
+}
 export function decrypt_ECB(data) {
   var s4 = new SM4Util();
   s4.secretKey = getsm4Key();

+ 71 - 5
ruoyi-ui/src/views/system/demo/index.vue

@@ -121,7 +121,7 @@ import {getstatisticaldata, gettreedata} from "@/api/system/dict/type";
 import * as echarts from "echarts";
 import CryptoJS from 'crypto-js';
 var Base64 = Base64 || require('@/api/tool/base64.js').Base64;
-import {encrypt_ECB,decrypt_ECB,encrypt_CBC,decrypt_CBC} from "@/api/tool/sm4";
+import {encrypt_ECB,decrypt_ECB,encrypt_CBC,decrypt_CBC,encrypt_ECBA} from "@/api/tool/sm4";
 
 require("echarts/theme/macarons"); //引入主题import { decryptData_ECB, decryptRowData_ECB } from "@/api/tool/sm4";
 
@@ -289,10 +289,76 @@ export default {
       para.para1 = "adfd95a4b3634b58b0cf3b8c67b18a29" //para1-para5 查询参数,使用规则selecttable依据业务表查询条件而定。
       this.$impxls(para, (para) => {
         this.$alert('选择值:' + para.length);
-        console.log(para,"wwwww");
-        this.dsbm = para.code;
-        this.dsmc = para.name;
-        this.qxpid = para.id;
+        let key="1234567887654321";
+        let sql="";
+        for (let i = 0; i <para.length ; i++) {
+          let tem='';
+          if (para[i][1]!='')
+          {
+            if (tem!='')
+            {
+              tem=tem+", txdz='"+encrypt_ECBA(para[i][1],key)+"'";
+            }
+            else
+            {
+              tem="txdz='"+encrypt_ECBA(para[i][1],key)+"'";
+            }
+          }
+          if (para[i][2]!='')
+          {
+            if (tem!='')
+            {
+              tem=tem+", frxm='"+encrypt_ECBA(para[i][2],key)+"'";
+            }
+            else
+            {
+              tem="frxm='"+encrypt_ECBA(para[i][2],key)+"'";
+            }
+          }
+          if (para[i][3]!='')
+          {
+            if (tem!='')
+            {
+              tem=tem+", frlxfs='"+encrypt_ECBA(para[i][3],key)+"'";
+            }
+            else
+            {
+              tem="frlxfs='"+encrypt_ECBA(para[i][3],key)+"'";
+            }
+          }
+          if (para[i][4]!='')
+          {
+            if (tem!='')
+            {
+              tem=tem+", frzjhm='"+encrypt_ECBA(para[i][4],key)+"'";
+            }
+            else
+            {
+              tem="frzjhm='"+encrypt_ECBA(para[i][4],key)+"'";
+            }
+          }
+         /* if (para[i][5]!='')
+          {
+            if (tem!='')
+            {
+              tem=tem+", frdjhm='"+encrypt_ECBA(para[i][5],key)+"'";
+            }
+            else
+            {
+              tem="frdjhm='"+encrypt_ECBA(para[i][5],key)+"'";
+            }
+          }*/
+        //  txdz	frxm	frlxfs	frzjhm	frdjhm
+          sql=sql+"update yljgsq_jcxx set "+tem+" where id='"+para[i][0]+"';\n";
+
+        }
+        console.log(sql)
+       // console.log(para,"wwwww");
+
+
+       // this.dsbm = para.code;
+       // this.dsmc = para.name;
+       // this.qxpid = para.id;
       }, (para) => {
         this.$alert(para);
       })