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

接口校验加密

发布时间: 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进行比较,一致则调用接口。

热点内容
启动ftp的命令是 发布:2024-11-24 09:12:33 浏览:601
脚本爬取数据 发布:2024-11-24 09:11:50 浏览:273
加密机制协议的是 发布:2024-11-24 09:11:47 浏览:826
易语言静态编译dll 发布:2024-11-24 09:11:43 浏览:583
cf游戏里最低配置怎么调 发布:2024-11-24 09:02:51 浏览:81
java排序算法效率 发布:2024-11-24 08:59:06 浏览:145
安卓vivo蓝牙耳机掉了一只怎么找 发布:2024-11-24 08:45:28 浏览:847
加油站脚本 发布:2024-11-24 08:44:02 浏览:434
绝地求生和cod哪个更吃配置 发布:2024-11-24 08:42:36 浏览:945
在哪里可以下载小游戏安卓版 发布:2024-11-24 08:42:30 浏览:692