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

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

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

}

}
阅读全文

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

热点内容
肺组织压缩15 浏览:267
安卓手机为什么换电话卡没反应 浏览:793
诸子集成pdf 浏览:336
php注册框代码 浏览:714
手机加密好还是不加好好 浏览:814
别克凯越压缩机泵头多钱 浏览:239
组管理命令 浏览:979
海南高德司机端是什么app 浏览:861
pid命令 浏览:888
一天一图学会python可视化 浏览:309
魔兽编辑文本命令串 浏览:497
android中view绘制 浏览:798
安卓机内存删除怎么恢复 浏览:331
Qt环境的编译软件放到linux 浏览:214
联创打印系统怎么连接服务器 浏览:937
杭州行政命令 浏览:160
如何查找服务器日志 浏览:801
加密的钥匙扣怎么写 浏览:579
文件夹更新不了怎么办 浏览:475
压缩机指示灯亮是什么原因 浏览:956