導航:首頁 > 文檔加密 > 自定義註解實現屬性值的加密

自定義註解實現屬性值的加密

發布時間:2024-08-24 18:18:27

1. SpringBoot Starter自定義註解 - 介面加解密

目標

本章我們將編寫一個starter,目標如下:

1、對外提供 @OpenAPI 註解,使用此註解它會對接收的請求數據進行解密,對要返回的數據進行加密

2、完成服務端使用示例

3、完成前端調用示例

加密規則

1、對業務數據進行AES加密,示意代碼:encryptData=AES("業務數據", aesKey)

2、對AES的key進行公鑰加密,示意代碼:encryptKey=RSA(aesKey, 公鑰)

3、簽名sign=md5(encryptData+encryptKey)

加密後請求示例

Content-Type: application/x-www-form-urlencoded;charset=UTF-8

請求參數

服務端返回示例


pom.xml

定義註解

配置公私鑰

具體代搜行碼邏輯

定義切面和自動殲巧裝配

spring.factories


服務端修改

在業氏漏鍵務項目中引入jar 包

配置公私鑰

改動的地方很少,只需要在原介面增加@OpenAPI註解即可

前端修改

修改前代碼

修改後要先對參數加密,然後對返回數據解密


安裝兩個加密庫

封裝RSA、AES和Base64加解密

2. java註解是怎麼實現的

在Java中,註解是一種強大的工具,它通過結合反射機制來為程序元素添加元數據。註解就像是為代碼添加了特殊的標記,沒有註解則表示缺失相應的信息。編譯器、開發工具和其他程序可以通過反射來識別類、欄位、方法等元素上是否存在特定的註解,並根據這些註解執行相應的操作。例如,你可以定義自定義註解,如`@MyAnnotation`,並將其應用到類(`@MyAnnotation public class AnnotationTest`)或方法上。

註解的實現涉及元註解,如`@Retention`和`@Target`。`@Retention(RetentionPolicy.RUNTIME)`確保註解在運行時被保留,允許通過反射獲取;`@Target(ElementType.METHOD, ElementType.TYPE)`則指定註解可以用於方法和類型。此外,`@Documented`使註解包含在JavaDoc中,`@Inherited`允許子類繼承父類註解的屬性。

在實踐中,你可以定義註解屬性,如`@MyAnnotation color(String), value(String)`等,並提供默認值。例如,`@MyAnnotation(metaAnnotation=@MetaAnnotation(birthday="1988-2-18"), color="red", array={23, 26})`展示了如何在類中使用註解並為其屬性賦值。通過反射,可以檢查類是否帶有特定註解,獲取註解的屬性值,如顏色、枚舉值和數組等。

註解在提高代碼可讀性、代碼自文檔化以及框架集成等方面發揮重要作用,它們是Java語言中一種靈活且實用的編程技術。

3. java 自定義的註解有什麼作用

自定義註解,可以應用到反射中,比如自己寫個小框架。

如實現實體類某些屬性不自動賦值,或者驗證某個對象屬性完整性等

本人自己用過的驗證屬性值完整性:

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public@interfaceIgnoreProperty{
}
然後實體類中:
{

@IgnoreProperty
=1L;

@IgnoreProperty
privateIntegerresearchId;

@IgnoreProperty
privateTarUseruserId;

privateStringversion;

privateStringgrade;
....
}

然後action類中
//驗證數據完整性

Class<TarResearch>userClass=TarResearch.class;

Field[]field=userClass.getDeclaredFields();

for(inti=0;i<field.length;i++){

if(field[i].getAnnotation(IgnoreProperty.class)!=null){

continue;

}

Stringfie=field[i].getName().substring(0,1).toUpperCase()

+field[i].getName().substring(1);

Methodmethod=userClass.getMethod("get"+fie);

Objectobj=method.invoke(u);

if(obj==null){

sendResponseMsg(response,"數據錯誤");

returnnull;

}

}
閱讀全文

與自定義註解實現屬性值的加密相關的資料

熱點內容
登錄伺服器發生錯誤怎麼回事 瀏覽:272
松下空氣能壓縮機 瀏覽:938
萬能源碼播放器 瀏覽:968
串口伺服器如何轉發 瀏覽:359
如何下載Ck電影部app 瀏覽:744
解壓文具筆袋簡單 瀏覽:288
android百度坐標轉換 瀏覽:367
文件公私鑰加密傳輸 瀏覽:665
python矩陣維度 瀏覽:927
華佗舌診源碼 瀏覽:897
解壓壓縮包有一個錯誤怎麼辦 瀏覽:966
怎麼在手機上設立文件夾 瀏覽:232
雲幫手伺服器搭建教程 瀏覽:785
惠普默認存在哪個文件夾 瀏覽:493
建立桌面圖標文件夾 瀏覽:86
python怎麼跳過異常繼續執行 瀏覽:315
單片機驅動可控硅 瀏覽:294
遼寧沈陽最新代理伺服器ip地址 瀏覽:565
如何安裝用友通伺服器 瀏覽:827
python怎麼將輸入轉為整數類型 瀏覽:608