网站首页 > 技术文章 正文
结合RSA与AES实现前后端加密通信
一、思路
使用RSA秘钥生成工具生成一对公钥(A)和私钥(B),前端保留A,后端保留B。
前端发送数据时,先生成一串随机16位字符串作为AES的秘钥(C),然后使用A使用RSA算法对C进行加密,得到加密后的AES秘钥(D)。将要发送的数据(E)用C使用AES加密,得到密文(F)。将D和F一同发给后端进行处理。
后端处理数据时,先用B对D使用RSA进行解密得到C,用C对F使用AES进行解密得到E,处理后得到结果G,再用C对G进行AES加密得到H,将H返回给前端。
前端接收到H后用C进行解密,得到处理的结果G。
因为对数据进行加密的AES秘钥是每次请求随机生成的,而且传输过程中AES是使用非对称加密的,只要后端持有的RSA私钥不泄露即可保证数据通信安全。
二、前端组件的使用
1、引入插件
① 引入AES对称加密插件
npm i --save crypto-js
② 引入RSA非对称插件
npm i --save jsencrypt
2、新建encrypt.js 页面进行封装 及使用
Encrypt.js封装导出内容如图:
使用
AES加密
使用 Encrypt()方法进行加密,传入两个参数:encrypted和key,key是随机生成的16位字符串,encrypted为需要加密的内容,最后return出加密结果
AES解密
使用Decrypt()方法进行解密,传参:data和key,key为随机生成的16位字符串(同加密时的key一致),data为后端返回AES加密字段,return解密string类型结果
RSA加密
encryptRsa()方法进行加密,根据后端提供公钥与随机生成的key值进行加密,输出加密结果
三、后端模块的使用
1.使用
使用@Decrypt注解进行解密,使用@Encrypt注解进行加密,其中value属性写入需要加解密的字段(以EL的形式),其中若需要对方法返回值加解密,需要@{return}的方式。type属性指出需要哪种加解密方法。
如图,需要对getUser()方法的s参数进行解密,对返回值进行加密,加密方式为 EncryptType.Controller_RSA_AES。
2.新增/修改加密方式
在枚举类EncryptType中添加新的枚举方法即可
枚举类中有三个抽象方法:encrypt()、decrypt()、getKey(),新增的枚举需要实现这三个方法。
对注解的拦截是DecryptAspect和EncryptAspect类,这是两个切面。拦截两个注解标注的方法后将value值交给SPEL解析器解析后修改对应的值。
- 上一篇: RSA密码加密传输-解决接口自动化测试中的登录问题
- 下一篇: RSA加密算法 rsa加密算法是什么
猜你喜欢
- 2025-07-01 Java 如何加载带密码的 PCKS8 PEM 私钥
- 2025-07-01 犯罪啊 2.8万台路由器居然共用一把RSA密钥
- 2025-07-01 HTTPS全站加密时代 网宿推证书优选方案
- 2025-07-01 如何在 Windows 11 或 10 上使用 Winget 安装 OpenSSH
- 2025-07-01 网络篇:朋友面试之https认证加密过程
- 2025-07-01 如何安全管理SSH密钥以防止服务器被入侵
- 2025-07-01 在 Windows 10 上实现免密码 SSH 登录
- 2025-07-01 HTTPS的加密过程是怎样的?(https加密和解密的过程)
- 2025-07-01 Linux系统实现SSH安全免密登录的设置与管理
- 2025-07-01 Burpsuit插件开发之RSA加解密(burpsuite安装插件)
你 发表评论:
欢迎- 591℃几个Oracle空值处理函数 oracle处理null值的函数
- 584℃Oracle分析函数之Lag和Lead()使用
- 571℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 569℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 565℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 557℃【数据统计分析】详解Oracle分组函数之CUBE
- 542℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 537℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)