vue+spirngboot前后端数据加解密(基于AES+RSA实现)

发布时间 2023-12-08 17:43:44作者: 五官一体即忢

案例说明

案例只针对post请求

这里使用’Content-Type’: ‘application/x-www-form-urlencoded; charset=UTF-8’;为键值对的形式(非json)

AES加密数据,RAS加密AES的key

实现思路

前台首先请求非加密接口获取后台的公钥
前台在请求前生成自己的公钥和私钥,以及AES对称加密的key
使用前台生成的aeskey对数据进行加密
在请求前使用后台的公钥对前台的aeskey进行加密
将前台加密的data、aeskey和前台公钥一起传递给后台
后台使用私钥对前台的aeskey进行解密,再用这个aeskey去解密data
后台如果需要返回数据,这时使用后台生成的aeskey对数据进行加密
后端使用前台的公钥对aeskey进行加密
将aeskey和加密后的数据一起返还给前台,由前台使用私钥解密获得后端的aeskey
再使用后端的aeskey解密数据
通过这种方式,前后端交互的数据在传输过程中都经过了加密和解密的过程,保证了数据的安全性。

后台(Springboot)
在实际开发中,我们不应该在每一个接口都单独调用加密解密方法,这样太臃肿了。我们应该将重复代码进行抽离(事不过三,三则重构),这里我们可以使用AOP(切面)来进行处理。比如,我们可以定义一个切面类来统一处理加密解密的逻辑,然后在需要加密解密的方法上面声明该切面类,即可自动在方法执行前后执行加密解密的逻辑,避免了重复的代码。

仓库代码地址