DESC結合Aop對銘感資料註解式加解密

2021-10-10 21:52:43 字數 2652 閱讀 8840

1.引入aop依賴

org.springframework.boot

spring-boot-starter-aop

2.自定義註解,使用aspect 對傳入資料加密,出參解密

/**

* @author zhenglong

* @description: desc加解密字段

* @date 2020/11/26 9:32

*/@target()

@retention(retentionpolicy.runtime)

@order(ordered.highest_precedence)

public @inte***ce endefield

3.編寫aop,實現註解類新增到方法和對應的字段上,可以進行自動加解密

/**

* @author zhenglong

* @description: 安全字段加密解密切面

* @date 2020/11/26 0:12

*/@aspect

@component("endefieldaspect")

public class endefieldaop

@around("execution(* com.csair.cargo.delivery.exchange.controller.*.*(..)) && @annotation(endefield)")

public object around(proceedingjoinpoint joinpoint,endefield endefield) catch (exception e)

handleencrypt(requestobj);

responseobj = joinpoint.proceed();

handledecrypt(responseobj);

} catch (nosuchmethodexception e) catch (throwable throwable)

return responseobj;

}/**

* 處理加密

** @param requestobj

*/private void handleencrypt(object requestobj) throws exception

authfield(requestobj, 1);

}/**

* 處理解密

** @param responseobj

*/private object handledecrypt(object responseobj) throws exception

@suppresswarnings("rawtypes")

executeresult executeresult = (executeresult) responseobj;

object o = executeresult.getresult();

if (o instanceof pageresult) else if (o instanceof collection) else

return responseobj;

}private object forlist(list list, integer flag) throws exception

for (object r : list)

return list;

}/**

* 公共加解密方法

** @param o

* @throws exception

*/private void authfield(object o, integer flag) throws exception

if (flag == 1) else

field.set(o, plaintextvalue);}}

}}

4.附上desc根據公鑰和向量加解密工具類

/**

* @author zhenglong

* @description: desc加解密utils

* @date 2020/11/25 19:17

*/public class descutils

}return sb.tostring();

}/**

* 解密資料

* @param message

* @return

* @throws exception

*/public static string decrypt(string message) throws exception

/*** 加密資料

* @param message

* @return

* @throws exception

*/public static string encrypt(string message) throws exception

/*** hex字串轉byte

* @param inhex 待轉換的hex字串

* @return 轉換後的byte

*/public static byte hextobyte(string inhex)

}

Java Mail結合AOP實現庫存預警

思路 在每次售出商品時會對庫存資料進行修改,此時在已有的方法中會返回乙個帶有倉庫所有資料的列表 關於aop的配置,此前雖然學習過,但很多地方已經不熟悉,於是在此處重新學習一遍。本例中使用xml配置,最關鍵的地方是切入點和切入方式。首先需要定義切面類,此類中定義了切入方法,並在spring中配置如下 ...

面向AOP程式設計 二 cache結合

快取配置 ehcache.xml 實現部分 一 初始化 cache private static cachemanager manager static private static void init 二 測試 aop 和 cache結合 public static void main strin...

對AOP池 AOP容器 的研究

通過前面的研究我發現思路侷限了 一直追求實現某個功能的 aop.物件導向的基礎是不斷抽象 當我們要把日誌,許可權 事務,工作流等模組都做成 aop的時候 就要想到 aop池這麼乙個概念了 功能模組是與業務完全解耦的 業務和功能模組在 aop池的兩側分別開發 往這個 aop池或者 aop容器中扔進去乙...