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

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

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

}

}
阅读全文

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

热点内容
linux好用的编辑器 浏览:998
linuxpartprobe 浏览:315
视频教育网站源码 浏览:513
java指定位数的随机数 浏览:900
300公斤压缩机 浏览:549
java时间转换毫秒数 浏览:290
我的世界怎么开挂在服务器 浏览:848
app怎么退定金 浏览:925
php获取外网地址 浏览:172
单片机lan 浏览:582
html炫酷黑页源码 浏览:955
如何远程更新服务器 浏览:785
服务器导轨怎么安装图解 浏览:984
如何设置加密共享文档 浏览:656
单片机双灯左移右移 浏览:927
网页无法打开pdf 浏览:556
linux命令scp 浏览:519
怎样把图片转为pdf格式 浏览:115
linux变量类型 浏览:840
linux中网卡配置 浏览:704