结合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私钥不泄露即可保证数据通信安全。

图2 后端加解密数据流图

图1 前端加解密数据流图

二、前端组件的使用

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解析器解析后修改对应的值。

aes 加密_结合RSA与AES实现前后端加密通信相关推荐

  1. AES前后端加密解密

    AES前后端加密 关于AES-来自百度百科 后端代码 前端代码 关于AES-来自百度百科 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称R ...

  2. Vue前端和Java后端 联调使用AES 前后端加密解密

    Vue前端和Java后端 联调使用AES 前后端加密解密 最近在项目中需要针对重要数据进行加密传输,在网上找了一大推加密方式 最终采用AES 加密 Java端 package com.zk.web.u ...

  3. RSA的运用和前后端签名的一些看法

    RSA的运用和前后端签名的一些看法 RSA在验签过程的使用场景分析 不按照上述方式验签会造成的问题 日常前后端交互简化版的RSA应用分析 RSA在验签过程的使用场景分析 RSA的文章有很多.原理性学术 ...

  4. php rsa aes混合加密,手动演示RSA和AES混合加密过程

    RSA属于非对称加密算法,它虽然解决了"在不安全的信道上安全地传递密钥"这一问题,但缺点在于运算量太大,造成加/解速度太慢,所以在具体的工程应用上是混合使用了对称和和非对称加密算法 ...

  5. rsa前后端加密流程_不懂前后端分离?这篇就够了

    一 传统的开发模式 前后端分离前我们的开发协作模式一般是这样的: 前端写好静态的HTML页面交付给后端开发.静态页面可以本地开发,也无需考虑业务逻辑只需要实现View即可. 后端使用模板引擎去套模板, ...

  6. 前后端加密解密 【JS加密模块(md5 、 crypto 、 crypto-js、jsencrypt) python RSA加密解密(pycryptodome )模块安装与使用】

    JS加密模块[js-md5(AES) . crypto (AES). crypto-js().jsencrypt(非对称加密.RSA)] 一.安装 npm install js-md5 npm ins ...

  7. sm4 前后端 加密_这7个开源的Spring Boot前后端分离项目整理给你

    来源|公众号:江南一点雨 前后端分离已经开始逐渐走进各公司的技术栈,不少公司都已经切换到前后端分离开发技术栈上面了,因此建议技术人学习前后端分离开发以提升自身优势.同时,也整理了 7 个开源的 Spr ...

  8. JS逆向--PyExecJS基本用法--网易云音乐逆向思路,node.js安装教程,逆向思路,逆向分析,加密机制,RSA,AES加密算法,加密算法啊破解,js引擎,定位数据包,分析栈结构,无痕窗口

    文章目录 前言 一.JS逆向以及PyExecJS模块介绍 1.JS逆向 2.PyEecJS 二.使用步骤 1.环境安装 安装PyExecJS模块 安装node.js开发环境(官网链接 https:// ...

  9. vue java 使用AES 前后端加密解密

    最近在项目中需要针对重要数据进行加密传输 在网上找了一大推加密方式 最终采用AES 加密 1.java端 package com.zk.web.util;/*** AES 128bit 加密解密工具类 ...

最新文章

  1. java两个线程同时运行_java如何几乎同时结束两个线程
  2. Java变量的修饰符
  3. vim 有用命令-20190217
  4. OpenV P N + AD(Ldap) + GoogleAuth认证安装
  5. 本周六锁定成都!解析百度文心(ERNIE)如何助力快速定制企业级NLP模型
  6. 视频传输面临的挑战和解决之道
  7. 织梦文章主表关联栏目查询 生成静态url语句
  8. CenterOs 防火墙设置
  9. 重读经典:《ImageNet Classification with Deep Convolutional Neural Networks》
  10. 使用System.Timers.Timer类实现程序定时执行
  11. 决策树 prepruning_决策树与随机森林
  12. Java面向对象之继承、super关键字、方法重写
  13. AT89C2051烧写器的制做与调试
  14. 失恋33天——我用57天考了一个5A
  15. 請教阿泰一個有關水晶報表的問題
  16. Docker可视化管理工具shipyard
  17. Linux RabbitMQ - CLI tool fails to authenticate with the server
  18. linux分析测序数据,[转]如何分析测序结果
  19. ppt的字母上面插入尖号
  20. 【CVE-2021-4043】Linux本地提权漏洞复现

热门文章

  1. c# 傅里叶变换 频域_傅里叶变换在MATLAB中的应用(频域滤波)
  2. 遗传算法python实现_Python遗传算法代码实例讲解
  3. 职高一年级计算机阶段考试,2012上期职高一年级计算机专业期末考试题.doc
  4. java实现log4j_log4j在java中实现
  5. 帧大小超过交换机mtu_交换机的三种交换方式
  6. C++ 四种类型转换运算符
  7. 【OpenCV 例程200篇】96. 谐波平均滤波器
  8. 个人计算机的防毒软件无法防御,在win10系统中无法启动defender防御软件的解决方法...
  9. 继电器触点粘连分析_在我们日常电气维护中如何避免由于继电器触点粘连造成的设备故障...
  10. excel sheet限制_Python 处理Excel内的数据(案例介绍*3)