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

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

發布時間: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;

}

}
閱讀全文

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

熱點內容
android判斷電話 瀏覽:162
如何刪除安卓手機里的安裝包 瀏覽:648
2021影視小程序源碼激勵廣告 瀏覽:202
java編程培訓機構 瀏覽:686
dtu源碼資料zip 瀏覽:696
蘋果6p是安卓的什麼配置 瀏覽:56
語音通話降噪演算法 瀏覽:474
pdf被加密不能列印 瀏覽:48
html內部伺服器錯誤什麼意思 瀏覽:768
加密金融風投是什麼 瀏覽:1001
未來之翼為什麼連接不了伺服器 瀏覽:563
手動壓縮噴霧器 瀏覽:654
linuxtimeval 瀏覽:703
煤氣罐解壓閥需要調緊嗎 瀏覽:234
兒研所APP為什麼沒有耳鼻喉科 瀏覽:1000
androidapp界面素材 瀏覽:820
一台伺服器主機建50台雲桌面 瀏覽:605
手機解壓了的圖片 瀏覽:885
stm32快閃記憶體編程教程 瀏覽:515
javassh管理系統源碼 瀏覽:7