当前位置:首页 » 密码管理 » 接口校验加密

接口校验加密

发布时间: 2024-10-03 14:48:42

‘壹’ SpringBoot 接口加密解密,新姿势!

在日常Java开发中,接口的安全性是重要考量因素,尤其是数据传输过程中的加密与解密。为避免重复编写代码,可以设计一个通用的starter,提供一致的加密解密功能。本文将介绍如何通过hutool-crypto实现加密解密,以及如何解决请求流只能读取一次的问题,同时引入SpringBoot的参数校验功能,减少冗余代码。此外,将详细说明如何自定义starter,实现接口的加密与解密功能。

在接口调用链中,request的请求流只能调用一次,导致后续使用请求流获取数据时发现数据为空。为解决此问题,可以继承HttpServletRequestWrapper,复制请求中的流供外部多次使用,或使用Filter替换request,实现流的重复获取。

SpringBoot-validation提供优雅的参数校验功能,使得实体类字段上加上对应注解即可在方法调用前自动校验参数。若希望在代码中调用实体类的校验功能,可利用工具类实现。自定义starter步骤如下,通过RequestBodyAdvice和ResponseBodyAdvice实现接口的加密与解密。

接口响应数据时,返回加密后的数据;接口入参接收解密后的数据。在进入接口前自动解密,获取所需数据。加密解密使用对称加密的AES算法,采用hutool-crypto模块实现。所有实体类提取公共父类,包含时间戳属性,确保数据时效性。加注解EncryptionAnnotation的接口自动对数据进行加密,参数使用RequestBody注解并继承RequestBase的类自动解密,转换为对应数据类型。自定义starter,实现开箱即用。

在项目实现中,首先通过gitee.com/springboot-hl链接获取项目源码,查看项目结构、组件与关键代码。加密与解密功能主要通过crypto-common模块实现,而加密解密starter则在crypto-spring-boot-starter中提供,包括接口、自动配置类、以及请求自动解密、相应自动加密的Advice方法。测试代码位于crypto-test模块,通过application.yml配置文件、实体类Teacher和TestController实现功能验证。

‘贰’ Java 调第三方接口一般都要生成随机字符串后一起加密,请问随机字符串的作用是什么

token俗称令牌。一般用于身份验证。使用MD5或者sha-256

‘叁’ API接口签名验证_MD5加密出现不同结果的解决方法

系统在提供接口给第三方系统使用时,通常为了安全性会做接口加密。
设计原则 :使用HTTPS安全协议 或 传输内容使用非对称加密,这里采用后者。

在对参数进行加密,生成sign时,相同的参数两次加密的结果不一样。

加密规则:

1.拼接出来的字符串不一致
测试时,在加密前将要加密的字符串打印出来比较,发现两次字符串一致。

2.编码问题
加密时,两次的默认编码不一致。
在上述加上默认编码: byte[] btInput = content.getBytes("utf-8"); ,问题解决。

简单实现:
1.接口调用方和接口提供方约定好统一的参数加密算法。
2.接口调用方在调用时把加密后的signature放在参数中去请求接口。
3.判断时间戳有效期。
4.将参数用约定号的加密算法进行加密,与参数中的signature进行比较,一致则调用接口。

热点内容
php字符数字比较 发布:2024-10-03 19:09:11 浏览:608
批量分发命令脚本 发布:2024-10-03 19:08:20 浏览:219
wds服务器拉黑了怎么办 发布:2024-10-03 18:50:12 浏览:819
英雄联盟盒子源码 发布:2024-10-03 18:46:00 浏览:18
erlang并发编程 发布:2024-10-03 18:41:50 浏览:560
手机存储空间用不了 发布:2024-10-03 18:40:03 浏览:986
怎么知道支付宝的账号和密码忘了怎么办 发布:2024-10-03 18:40:02 浏览:606
电脑术语服务器是什么意思 发布:2024-10-03 18:38:33 浏览:347
安卓版本如何下载两个微信 发布:2024-10-03 18:21:30 浏览:212
webview跨域android 发布:2024-10-03 18:16:22 浏览:207