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

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

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

}

}
閱讀全文

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

熱點內容
演算法失效分析 瀏覽:756
gcc編譯選項給gdb調試 瀏覽:586
ios和android前景好 瀏覽:62
蘋果如何藍牙傳送安卓app 瀏覽:550
方舟編譯器mod怎麼用 瀏覽:760
伺服器地址欄在哪裡 瀏覽:395
做安檢還是程序員好 瀏覽:526
程序員最火的bug 瀏覽:938
騰訊文件夾英文怎麼寫 瀏覽:127
pdf內碼 瀏覽:434
微信小程序文件夾怎麼發給好友 瀏覽:969
java不能被繼承的類 瀏覽:163
蘋果app網址怎麼添加 瀏覽:910
php明年的今天 瀏覽:115
麒麟970也能用方舟編譯器么 瀏覽:476
金融實驗大作業python 瀏覽:795
雲伺服器搭建聊天室 瀏覽:603
怎麼在手機上下載荔枝app 瀏覽:18
湖南戴爾伺服器雲空間 瀏覽:363
聯想驅動怎麼解壓 瀏覽:268