导航:首页 > 文档加密 > 如何实现注解对属性进行加密

如何实现注解对属性进行加密

发布时间:2024-07-10 17:15:39

㈠ SpringBoot 请求消息体解密(通信加密解密)

在一些安全性要求较高的项目中,我们希望客户端请求数据可以做到数据加密,服务器端进行解密。(单纯的HTTPS仍难以满足安全需要。)

本文基于SpringBoot针对消息体进行解密,目前仅支持请求消息解密。(响应消息过大情况下,加密会带来严重的性能问题。)

流程如下:
使用DES cbc模式对称加密请求体。要求客户端请求前加对消息体进行加密,服务器端通过SpringMVC Advice拦截请求解密后,传给controller的方法。

@ControllerAdvice注解可以扫描针对Controller层的扩展组件。通过@Sort注解可以使其支持顺序加载。
RequestBodyAdviceAdapter是RequestBodyAdvice适配器类,可以方便的扩展所需要的方法。

RequestBodyAdvice功能如下:
允许在请求消息体在被读取及调用convert转换成实体之前做一些个人化操作,作用于含有@RequestBody注解的请求。实现此接口的类,需要在RequestMappingHandlerAdapter中配置或通过@ControllerAdvice注解配置。

原文如下:

使用以下注解即可快速开启全部请求的服务器端消息体解密功能。

使用scan-annotation可开启注解所标注的Conrtoller的类或其方法的解密功能。将要解密的方法或类上添加@SecretBody注解。并开启以下配置:

可以使用annotation-class配置自己的自定义注解:

作用于整个类:

作用于方法:

默认密钥如下,可以自行修改

前端调用时,需先将要请求的消息体通过DEScbc模式加密消息体(如json字符串)后传输。一般在http工具的请求拦截器中进行处理。如为json,仍然需要指定content-type为application/json。
postman请求示例如下:

㈡ PGP软件的使用操作,怎么加密文件!

接下来启动你的TheBat!选择工具菜单的OpenPGP项的“选择OpenPGP版本”命令,如下图:出来“选择OpenPGP执行”对话框,如下图:确定之后,再选择工具菜单的OpenPGP项的“OpenPGP键管理器”,如下图:出现“Key Generation Wizard”(如果你是重装系统,恢复的PGP里已经有密钥了,那么这一步会直接出现PGP的密钥管理器,如果你要新加密钥可以选择“Keys”菜单下的“New Key...”命令,否则,跳过该步。),选择下一步,出现下图:如图操作,再下一步:一般来说,使用RSA算法的属于是比较通用的,建议选用,下一步一般来说,2048位的RSA是比较安全的了...... 下一步:再下一步:密码最长是128位,只要你能记住,越长越好,而且最好是字母和数字混合的,单纯的数字作为密码并不可靠。中间的密码质量的指示条清楚的展现了的你的密码长度和安全性。如果你的主板不是Intel的810/815等系列,在你点击下一步之前,最好做好运动鼠标的准备,点击下一步后,就可以开始运动鼠标了:^_^这下终于知道了Intel为什么在8XX系列主板芯片组的固件中心(其实就是BIOS)里面加入硬件的随机数发生器了吧,呵呵,完成后,点击下一步:最后,下一步:完成了,呵呵,点击“完成”,看看成果吧:等等:?!老老实实备份吧......公钥无所谓,下面的私钥可是你的命根子:好了,这个最关键的搞成了,下面还有几个参数看看,打开The Bat!工具菜单的OpenPGP项的“OprePGP参数选择”命令:出来对话框:OK了,确定......过我们知道,PGP是对称加密,别人要发给你加密邮件,必需得有你的公钥才行,反过来,你要给别人发加密邮件,也得有别人的公钥才行,那么如何获得别人的公钥呢?前面说的,你可以把你的公钥发布到服务器上去,让别人查询,用样,你也可以自己到服务器上去找,方法就是启动PGP密钥管理器(选择The Bat!工具菜单的OpenPGP项的“OpenPGP键管理器”),选择Server菜单的“Search...”命令:然后出现Search对话框,选择合适的条件,搜索内容,然后拨号上网,就可以Search了:找到你要的结果以后,可以在结果上面点击右键,选择“Import to Local Keyring”命令,就可以把那个公钥加入你的本地密钥库了:不过,以上对于公共邮箱的公钥,当然可以发布到服务器上,但是私人邮箱呢?当然不能发布,那么就只能手工发给人家了:启动PGP密钥管理器(选择The Bat!工具菜单的OpenPGP项的“OpenPGP键管理器”),选择你准备发送的密钥,点击右键,选择“Copy”,然后再到邮件内容编辑窗口里面“粘贴”后(注意,不要修改粘贴上去的内容 )发给对方就行了(放心,不会把你的私钥给贴出来的^_^):发是发出去了,但是收呢?如果你收到别人的内容里附有公钥的邮件,你可以直接选择The Bat!工具菜单的OpenPGP项的“输入OpenPGP键”命令,就可以直接将他的公钥导入了:至此,设置部分全部结束......好了,万事俱备了,让我们来试一把:按照正常的方法写信,彻底写完以后(不需要再改了),选择邮件编辑窗口的“秘密”菜单的“OpenPGP”项,如下图:选择一个以后,会出来对话框:好了,OK,现在看看那封信?呵呵,出效果了吧,好了,发出去吧......嗯,挺快,收到一封加密的信,怎么办?当然是解密了,呵呵,选中那封信,然后选择The Bat!工具菜单的“OpenPGP”项的“OpenPGP解码”命令,输入你的私钥口令,你会收到一个PGPLOG的对话框,告诉你结果,如果成功了,你会在你的收件箱里找到一封主题为“(PGP Decrypted)”的收发件人和原信一样的邮件,当然是解密的......(如果是签名的邮件,和前面一样,只是然后选择The Bat!工具菜单的“OpenPGP”项的“检查OpenPGP签名”命令,而不是“OpenPGP解码”命令,PGPLOG窗口会告诉你结果的,当然,也不会有解密的邮件出现):呼呼,终于结束了,呵呵,反正基本的PGP的邮件功能就这么多了。当然,PGP的高级功能还有很多,而且PGP并不是只能用在邮件加密上,而且还能应用于加解密文本、图片,加解密其他文件,乃至于擦写磁盘等等一系列的功能,这些,就请各位自己去开发、扩展了,呵呵呵呵^_^参考: http://netsecurity.51cto.com/art/200512/14945.htm 网站图文并茂,注解详细,极适合初学者

㈢ spring jpa之实体属性类型转换器AttributeConverter,自定义Converter,通用Converter

在JPA注解中,有个@Convert注解,其中需要传入一个Class作为convert参数,该class需要实现AttributeConverter<X,Y>接口。下面来看看AttributeConverter接口的作用。

实体属性类型转换器。主要使用场景:

简单化操作,用持久化enum枚举来进行一个操作。 AttributeConverter<X,Y> 该接口中需要实现两个方法:

场景:用户登录时,记录用户的动作:登录,登出,注册,重置密码。

数据的加密和日期的转换也就类似的操作了。

但是这样的每个枚举可能都要去写这样的转换类,可能会存在重复的操作。可以尝试写个通用的枚举转换类。

㈣ 如何在西门子PLC程序中输入注解

· 项目组件注释 · 网络注释 · 项目组件属性项目组件注释 在“网络1”上方的灰色方框中单击,输入POU注释。 您可以单击“切换POU注释”按钮 或选择和取消选择检视(View)> POU注释(POU Comments)选项,在POU注释“打开”(可视)或“关闭”(隐藏)之间切换。 每条POU注释所允许使用的最大字符数为4,098。POU注释是供选用项目,可视时,始终位于POU顶端,并在第一个网络之前显示。 西门子PLC的网络标题: 将光标放在网络标题行的任何位置,输入一个识别该逻辑网络的标题。昆仑通态触摸屏网络标题中可允许使用的最大字符数为 127。 西门子PLC的网络注释: 在“网络1”下方的灰色方框中单击,输入网络注释。您可以输入识别该逻辑网络的注释,并输入有关网络内容的说明。 您可以单击“切换网络注释”按钮 或选择和取消选择检视(View)> 网络注释(Network Comments)选项,在网络注释“打开”(可视)和“关闭”(隐藏)之间切换。 威纶触摸屏的网络注释中可允许使用的最大字符数为4,096。 西门子PLC的项目组件属性: 您可以用以下两种方法中的一种存取“属性”标记。 用鼠标右键单击指令树中的POU ,并从鼠标右键菜单中选择“属性”。“一般”标记 “一般”标记允许您为子例行程序、中断例行程序和主程序块(OB1)重新编号和重新命名,并为项目指定一个作者。 注释:您不能将默认名称(STEP 7- Micro/WIN指定的POU地址,例如,SBR1代表子例行程序或INT1代表中断例行程序)用作符号名,因为这样即构成 STEP 7-Micro/WIN会报告一则错误。 如果您在程序中为POU指定符号名,符号名会在程序代码中显示,即使您没有启用“符号编址”视图亦如此。符号表显示一个列出所有符号名赋值的标记(“POU符号”)。您只能检视该标记;但无法从符号表编辑条目。欲改变赋值,您必须编辑 适当的POU的“属性”对话框。 “保护”标记 “保护”标记允许您选择一个密码保护POU,以便其他用户无法看到该POU,并在下载时加密。欲用密码保护POU: 1. 用鼠标单击“主POU”,并选择“属性...”。 2. 选择“保护”标记。 3. 选择“用密码保护该POU”复选框。输入一个四个字符的密码并核实该密码。

㈤ Spring boot-手把手教你使用Token

JWT由三部分组成,由类型和加密算法的head(头部),包含公共信息和自定义信息的playboard(负载),以及signature(签名)组成。

就是头部信息,这是由base64加密后的密文,base64是一种对称加密算法,解密后的json格式如下。头部信息由type(类型)和 alg(加密算法)组成。类型就是"JWT",加密算法一般使用 HMAC SHA256加密算法。

0 就是负载信息,加密后的json格式如下。负载信息一般由标准申明,公共声明,私有声明组成。

iss: jwt签发者
sub: jwt所面向的用户
aud: 接收jwt的一方
exp: jwt的过期时间,这个过期时间必须要大于签发时间
nbf: 定义在什么时间之前,该jwt都是不可用的.
iat: jwt的签发时间
jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击。

公共的声明和私有的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息。但不建议添加敏感信息,因为该部分在客户端可解密。

第三部分签名是由base64加密后的头部信息和负载信息以及secret组成的签名,签名算法是有头部信息定以的加密算法,一般是HMAC SHA256。然后头部,负载,签名三部分组成了token。

pom.xml引入依赖

新增controller,提供token接口

CallbackService 生成token

返回的示例如下

定义自定义注解,在需要token校验的方法上加上即可

新增AuthenticationInterceptor对第三方请求进行拦截,实现HandlerInterceptor接口

注册AuthenticationInterceptor拦截器,对指定请求路径进行拦截

在此文中,我们大致了解了Token的定义,获取,校验等方法。此外,Token 的无状态,可扩展性,多平台跨域等特性,也让Token广泛应用在安全校验领域中。在接下来的几篇文章中,我将介绍如何使用Spring AOP进行加密,解密,验签等操作。

参考:
https://www.jianshu.com/p/576dbf44b2ae

㈥ 这段MD5加密算法是什么意思,谁能帮我解释下不会java看不懂。。。求逐行注解下。越通俗越好。谢谢

package com.util; // 包名
/**
*MD5密码加密类
*
*/

import java.security.*; // 引入java.security包下的所有类
import java.security.spec.*;
public final class MD5 { // 命名类

public final static String MD5(String s){ // 静态 final 方法
char hexDigits[] = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',
'e', 'f'}; // char类型数组,变量名为hexDigits
try {
byte[] strTemp = s.getBytes(); // 把参数 s 转换成byte类型数组
MessageDigest mdTemp = MessageDigest.getInstance("MD5"); // 得到一个MessageDigest 类型的变量mdTemp,提供

信息摘要算法的功能
mdTemp.update(strTemp); // 更新摘要
byte[] md = mdTemp.digest(); // 这个方法应该是加密后返回的byte数组
int j = md.length; // 记录md的长度
char str[] = new char[j * 2]; // 存储结果用
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf]; // hexDigits 数组中对应的十六进制数放入str中
str[k++] = hexDigits[byte0 & 0xf]; // 有高人吗?再解释一下?
}
return new String(str); // 返回加密后的字符串
}
catch (Exception e){
return null; // 如果有异常返回null
}
}
}

㈦ C++ 一个关于加密解密的程式 写注解

那几个头文件按是编程者自己加上去的。
因为,代码中用到了若干库函数,例如remove(), rename(0, getch(), isdigit(), puts()等等
有些库函数不是在stdio.h中声明的,所以编译的时候会提示没有对应的函数,
需要把那些函数所对应的头文件包含进来。

阅读全文

与如何实现注解对属性进行加密相关的资料

热点内容
云端服务器什么作用 浏览:1
关闭系统运行命令 浏览:956
程序员哪找兼职 浏览:785
什么app可以让孩子学习数学 浏览:202
怎么弄坏空调的压缩机 浏览:983
phpexcel浮点数 浏览:484
怎么用命令方块让村民帮自己战斗 浏览:571
java随机数代码 浏览:828
主题叫火什么的app 浏览:880
智能水表加密阀门 浏览:653
月饼玩具解压 浏览:510
迅捷pdf编辑器官网 浏览:962
打造云服务器的应用 浏览:613
程序员去医院做项目 浏览:332
viper4android安卓60 浏览:493
java软件源码 浏览:161
空气压缩机的类型 浏览:354
centos图形命令行界面切换 浏览:240
新京报新闻APP什么时候有的 浏览:818
华为手机文件夹重命名空白 浏览:751