前言
我们作为程序猿,在浏览网站的时候偶尔也会打开控制台看看请求的接口,我们会发现有些接口的传输是 "乱码" ,那么这个乱码究竟是什么呢?为什么要这么做?
其实这个所谓的 "乱码" 其实是一种加密后的密文,其原理是前后端提前约定好一种协议,在该协议下进行加解密的处理,例如:前端将数据加密后发送给后端,后端接收到参数后,第一时间先在约定好的协议下将密文解密成可识别的对象,再进行逻辑处理,最后将结果加密返回给前端,前端获取到密文后,同样依照约定好的协议对密文进行解密,最后将解密出来的数据拿来使用。
那么我们想实现同样的效果,应该如何做呢?别急,听哥们给你一一道来。
介绍
一般来说加密算法会分为两种:对称加密算法 和 非对称加密算法 。
对称加密算法
摘自百度百科: 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
非对称加密算法
摘自百度百科: 不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。
经过百度百科中的简单概要,我们已经知道了对称加密算法 和 非对称加密算法 都是什么,但它们中间又有什么不同呢?早就猜到你会这么问了,所以我已经把它们的区别一一列出来了。
区别
密钥
对称加密: 一共只有一种密钥,并将该密钥同时用来加解密。
非对称加密: 共有两种密钥:公钥 和 私钥 ,使用公钥来加密,使用私钥来解密。
速度
对称加密: 算法简单且加解密容易,所以执行效率高、速度快。
非对称加密: 由于加密算法比较复杂,所以加解密的效率很低,速度远不如 对称加密 。
安全性
对称加密: 由于加解密均使用的为同一个密钥,那么若密钥泄露则有被破解密文的风险。
非对称加密: 由于使用了两种密钥,且公钥是可公开的密钥,使用私钥来进行解密,消除了用户交换密钥的条件,极大程度上保证了数据安全。
实现
在这里给大家介绍一下 AES + CBC + PKCS5Padding 的加密方式,具体实现如下:
引入依赖
编写密钥荷载
注意:这里的 AES_KEY 和 AES_IV 可以自定义,但 必须是16位的。
编写AES工具类
自定义注解
该注解作用于接口上,可以对接口的加密或者解密实现更加粒子化的控制,默认入参解密,出参加密。
DecodeRequestBodyAdvice
EncodeResponseBodyAdvice
编写测试控制器
我们在这里编写了两个接口,其中 getSecret 接口不对入参进行解密,对出参进行加密,也就是前端传明文,后端返回为密文。getBySecret 接口是对入参进行解密,不对出参加密,也就是前端传密文,后端返回为明文。
我们的测试思路就是先测试getSecret 接口,同时也获取到了密文,在测试getBySecret 接口时将getSecret 接口返回的密文作为参数传进去。
测试
我们通过getSecret 接口拿到了密文,接下来将该密文作为参数调用getBySecret 接口。
可以看到我们成功将密文解析了出来,并且对接口入参没有影响。
到此这篇关于一文教你如何使用AES对接口参数进行加密的文章就介绍到这了,更多相关AES接口参数加密内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!