导航:首页 > 文档加密 > 自定义注解实现属性值的加密

自定义注解实现属性值的加密

发布时间: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;

}

}
阅读全文

与自定义注解实现属性值的加密相关的资料

热点内容
安卓手机拍照为什么总是抖动 浏览:250
汽车车载app如何下载 浏览:24
python复合型数据类型 浏览:375
登录服务器发生错误怎么回事 浏览:272
松下空气能压缩机 浏览:938
万能源码播放器 浏览:968
串口服务器如何转发 浏览:359
如何下载Ck电影部app 浏览:744
解压文具笔袋简单 浏览:288
android百度坐标转换 浏览:367
文件公私钥加密传输 浏览:665
python矩阵维度 浏览:927
华佗舌诊源码 浏览:898
解压压缩包有一个错误怎么办 浏览:966
怎么在手机上设立文件夹 浏览:232
云帮手服务器搭建教程 浏览:785
惠普默认存在哪个文件夹 浏览:493
建立桌面图标文件夹 浏览:86
python怎么跳过异常继续执行 浏览:315
单片机驱动可控硅 浏览:294