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

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

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

}

}
閱讀全文

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

熱點內容
新科源碼 瀏覽:659
如何判斷伺服器有沒有帶寬 瀏覽:41
天正建築批量刪除命令 瀏覽:94
cad最下面的一排命令都什麼意思 瀏覽:456
pythonimportcpp 瀏覽:850
W10的系統怎麼給U盤加密 瀏覽:370
華為手機代碼編程教學入門 瀏覽:762
和彩雲沒會員怎樣解壓 瀏覽:634
androidimageview保存 瀏覽:387
新買店鋪什麼伺服器 瀏覽:883
文件夾能直接刻錄嗎 瀏覽:493
androidxmpp刪除好友 瀏覽:969
javac哪個前景好 瀏覽:428
中華英才網app為什麼不能搜索了 瀏覽:660
伺服器域名是什麼意思 瀏覽:52
Linux導出mysql命令 瀏覽:159
無詐建鄴是什麼app 瀏覽:228
python中的雙色球 瀏覽:168
python解釋器里如何換行 瀏覽:413
python編寫格式 瀏覽:577