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

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

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

}

}
阅读全文

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

热点内容
编程教育老师成长心态 浏览:257
音频采集单片机 浏览:590
加密管的优点 浏览:280
dock基础命令 浏览:345
java编程爱好者 浏览:723
做外包程序员怎么样 浏览:865
程序员技术门槛 浏览:473
路由花生壳搭建web服务器地址 浏览:541
小米传送文件用什么app 浏览:102
哪个领域算法好 浏览:380
用命令行编译java 浏览:677
笔趣阁app哪个是正版手机app 浏览:427
程序员这个工作好吗 浏览:898
agps定位服务器地址 浏览:659
用水做的解压玩具怎么做 浏览:418
安卓411能下载什么 浏览:304
小海龟logo命令 浏览:493
java制作界面 浏览:895
台达plc编程电缆制作 浏览:249
30多岁当程序员 浏览:442