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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot 请求消息体解密(通信加密解密)相关的知识,希望对你有一定的参考价值。

参考技术A 在一些安全性要求较高的项目中,我们希望客户端请求数据可以做到数据加密,服务器端进行解密。(单纯的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请求示例如下:

以上是关于SpringBoot 请求消息体解密(通信加密解密)的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot中如何灵活的实现接口数据的加解密功能?

SpringBoot Starter自定义注解 - 接口加解密

深度解密HTTP通信细节

SSL/TLS通信

数字签名 数字证书

为啥Wireshark无法解密HTTPS数据