前后端数据加密传输【最佳方案】
AES和RSA区别
算法 | 类型 | 安全性 | 密钥长度/输出长度 | 速度 | 应用场景 |
---|---|---|---|---|---|
AES | 对称加密 | 高 | 128位、192位、256位 | 快 | 适用于大规模数据加密,入HTTPS协议的数据传输 |
RSA | 非对称加密 | 高 | 1024位、2048位、4096位 | 较慢 | 适用于数据安全传输、数字签名和身份验证 |
综上:兼顾安全性和性能,避免RSA处理大量数据的瓶颈,采用下面方式
RSA 送钥匙(AES 密钥)+ AES 锁数据
流程图
+-------------------+ +---------------------+ +-------------------+
| 前端(用户) | | 网络传输 | | 后端(服务器) |
+-------------------+ +---------------------+ +-------------------+| | || 1. 生成随机AES密钥 | ||------------------------------>| || | || 2. 用RSA公钥加密AES密钥 | ||------------------------------>| || | || 3. 用AES密钥加密支付数据 | ||------------------------------>| || | || 4. 发送加密后的数据 + 加密的AES密钥 | ||----------------------------->|----------------------------->|| | || | 5. 用RSA私钥解密AES密钥 || |<------------------------------|| | || | 6. 用AES密钥解密支付数据 || |<------------------------------|| | || | 7. 处理支付完成 || | |
+-------------------+ +---------------------+ +-------------------+
分步解释
1. 前端生成随机AES密钥
- 用户输入支付信息(如银行卡号)时,前端生成一个随机的AES密钥(对称加密密钥)。
2. 用RSA公钥加密AES密钥
- 前端用后端提供的 RSA公钥,加密这个AES密钥,得到加密后的AES密钥。
3. 用AES密钥加密支付数据
- 前端用生成的AES密钥,加密支付数据(如银行卡号),得到加密后的支付数据。
4. 发送加密内容到后端
- 前端将 加密后的支付数据 和 加密后的AES密钥 一起发送给后端。
5. 后端用RSA私钥解密AES密钥
- 后端用自己的 RSA私钥 解密收到的加密AES密钥,得到原始的AES密钥。
6. 后端用AES密钥解密支付数据
- 后端用解密出的AES密钥,解密支付数据,得到明文银行卡号。
7. 处理支付
- 后端完成支付逻辑(如验证卡号、扣款等)。
关键点
-
RSA 管钥匙(AES密钥)
RSA 加密速度慢,但适合加密小数据(如短小的AES密钥)。
-
AES 管数据
AES 加密速度快,适合加密大量数据(如长文本、文件)。
-
安全性
即使黑客截获数据,没有RSA私钥无法解密AES密钥,没有AES密钥也无法解密支付数据。
-
效率
综合了RSA的安全性和AES的高效性,适合实际应用。
一句话总结
前端:(AES密钥 + 支付数据) → RSA加密AES密钥 → AES加密数据 → 发送
后端:RSA解密AES密钥 → AES解密数据 → 完成支付 ✅
相关文章:
前后端数据加密传输【最佳方案】
AES和RSA区别 算法类型安全性密钥长度/输出长度速度应用场景AES对称加密高128位、192位、256位快适用于大规模数据加密,入HTTPS协议的数据传输RSA非对称加密高1024位、2048位、4096位较慢适用于数据安全传输、数字签名和身份验证 综上:兼顾安全性和性能…...
爬虫案例七Python协程爬取视频
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Python协程爬取视频 前言 提示:这里可以添加本文要记录的大概内容: 爬虫案例七协程爬取视频 提示:以下是本篇文章正文…...
算法每日一练 (9)
💢欢迎来到张胤尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 算法每日一练 (9)最小路径和题目描述解题思路解题代码…...
对接RAGflow的API接口报错
对接RAGflow的API接口,报错: {"status":"success","message":"API连接正常","response":{"code":109,"data":false,"message":"Authentication error: API key …...
智慧城市智慧社区项目建设方案
一、项目背景 在全球化进程加速的今天,城市化问题日益凸显,传统的城市管理模式已难以满足现代社会对高效、智能化管理的需求。智慧城市和智慧社区的概念应运而生,其核心目标是通过信息技术手段,提升城市资源的利用效率࿰…...
Orale数据文件加错位置,你直接rm引发的故障
数据库可能面临硬件故障、人为错误、恶意攻击、自然灾害等多种潜在风险,那么今天这个故障就是由于业务人员加错数据文件的位置,然后直接从物理层面rm -f了,导致了生产的故障! 以下是针对Oracle数据库物理删除数据文件后的快速修复…...
Web网页开发——水果忍者
1.介绍 复刻经典小游戏——水果忍者 2.预览 3.代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title&…...
51 单片机中断控制寄存器 TCON
在 51 单片机中,中断控制寄存器 TCON(Timer/Counter Control Register,定时器 / 计数器控制寄存器)主要用于控制定时器 / 计数器的启动、停止以及外部中断的触发方式等。它既可以按字节寻址,也可以按位寻址,…...
电脑如何在系统默认的壁纸中切换自己喜欢的
1、声明:该切换壁纸仅支持win10。 当你想去切换系统默认的壁纸,但是不知道该怎么切换,别慌,小亦教你几招帮你快速切换自定义壁纸。 我们平常使用的win10桌面壁纸大部分都是 简单、朴素的壁纸,但如果你想要切换自己喜…...
AcWing 600. 仰视奶牛 单调栈模板题
https://www.acwing.com/problem/content/description/602/ 找x右边第一个大于x的数的位置 const int N 1e5 10,T 20;int n; LL a[N],stk[N],top,r[N];void solve() {cin >> n;for (int i 1;i < n;i ) cin >> a[i];for (int i n;i > 1;i --){while(top…...
使用Galaxy创建生物信息学工作流的步骤详解
李升伟 整理 Galaxy 是一个基于 Web 的生物信息学平台,提供了直观的用户界面和丰富的工具,帮助用户创建和管理生物信息学工作流。以下是使用 Galaxy 创建生物信息学工作流的主要步骤: 1. 访问 Galaxy 平台 打开 Galaxy 的官方网站ÿ…...
OmniDrive(2):环境搭建
文章目录 1. 环境安装1.1 cuda 和cudnn安装1.2 依赖包安装2. 准备数据集及权重2.1 下载nuScenes数据2.2 下载预训练权重3. 模型训练及推理3.1 训练3.2 推理根据OmniDrive 官方的环境配置 Environment Setup python 3.9 ubantu 22.04 cuda 11.7 torch1.13.11. 环境安装 1.1 cu…...
计算机底层知识一——从编程语言到可执行程序
好久没写博客了,近段时间事情比较杂,最近终于有时间回归了。其余代码写久了就会遇到许多奇奇怪怪的问题,这些问题绕不开许多底层知识,比如缺少动态依赖库、idea编译失败等等,虽然通过百度等搜索引擎,亦或是…...
HarmonyOS Next~鸿蒙系统ArkCompiler跨平台编译技术的革新实践
HarmonyOS Next~鸿蒙系统ArkCompiler跨平台编译技术的革新实践 引言 在万物互联时代,操作系统对编译技术的需求已从单纯的代码转换演变为跨设备协同、高效资源调度与极致性能优化的综合挑战。华为鸿蒙系统(HarmonyOS)自主研发的ArkCompiler…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_cycle_modules
声明在 src/core/ngx_module.h ngx_int_t ngx_cycle_modules(ngx_cycle_t *cycle);实现在 src/core/ngx_module.c ngx_int_t ngx_cycle_modules(ngx_cycle_t *cycle) {/** create a list of modules to be used for this cycle,* copy static modules to it*/cycle->modul…...
Java多线程与高并发专题——关于CopyOnWrite 容器特点
引入 在 CopyOnWriteArrayList 出现之前,我们已经有了 ArrayList 和 LinkedList 作为 List 的数组和链表的实现,而且也有了线程安全的 Vector 和Collections.synchronizedList() 可以使用。 首先我们来看看Vector是如何实现线程安全的 ,还是…...
Wpf-ReactiveUI-Usercontrol与主界面交互
文章目录 Usercontrol与主界面方法一、使用属性绑定UserControl 部分(MyUserControl.xaml.cs)UserControl 视图模型部分(MyUserControlViewModel.cs)主界面部分(MainWindow.xaml)主界面视图模型部分(MainWindowViewModel.cs)方法二、使用消息传递UserControl 视图模型部…...
MySQL中like模糊查询如何优化?
大家好,我是锋哥。今天分享关于【MySQL中like模糊查询如何优化?】面试题。希望对大家有帮助; MySQL中like模糊查询如何优化? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 MySQL 中,LIKE 模糊查询虽然非常常见,…...
用Ruby的Faraday库来进行网络请求抓取数据
在 Ruby 中,Faraday 是一个非常强大的 HTTP 客户端库,它可以用于发送 HTTP 请求并处理响应。你可以使用 Faraday 来抓取网页数据,处理 API 请求等任务。下面我将向你展示如何使用 Faraday 库进行网络请求,抓取数据并处理响应。 1.…...
2025天梯训练1
PTA | L3-1 直捣黄龙 30分 思路:多关键字最短路,同时还要记录最短路径条数。 typedef struct node{int from,d,pass,kl;bool operator<(const node &x)const{if(d!x.d) return d>x.d;if(pass!x.pass) return pass<x.pass;return kl<x.…...
DeepSeek教我写词典爬虫获取单词的音标和拼写
Python在爬虫领域展现出了卓越的功能性,不仅能够高效地抓取目标数据,还能便捷地将数据存储至本地。在众多Python爬虫应用中,词典数据的爬取尤为常见。接下来,我们将以dict.cn为例,详细演示如何编写一个用于爬取词典数据…...
揭开AI-OPS 的神秘面纱 第四讲 AI 模型服务层(自研方向)
AI 模型服务层技术架构与组件选型分析(自研方向) 基于自有开发寻训练方向 AI 模型服务层 是 AI-Ops 架构的 核心智能引擎,负责构建、训练、部署、管理和监控各种 AI 模型,为上层应用服务层提供智能分析和决策能力。 AI 模型服务层需要提供一个灵活、可扩展、高性能的平台…...
[通俗易懂C++]:std::optional
[通俗易懂C]:std::optional 考虑下面这样一个函数: int doIntDivision(int x, int y) {return x / y; }如果调用者传入一个语义上无效的值(例如 y 0 ),此函数无法计算一个返回值(因为除以 0 在数学上是未定义的)。在…...
深入理解与配置 Nginx TCP 日志输出
一、背景介绍 在现代网络架构中,Nginx 作为一款高性能的 Web 服务器和反向代理服务器,广泛应用于各种场景。除了对 HTTP/HTTPS 协议的出色支持,Nginx 从 1.9.0 版本开始引入了对 TCP 和 UDP 协议的代理功能,这使得它在处理数据库…...
使用 vxe-table 导出 excel,支持带数值、货币、图片等带格式导出
使用 vxe-table 导出 excel,支持带数值、货币、图片等带格式导出,通过官方自动的导出插件 plugin-export-xlsx 实现导出功能 查看官网:https://vxetable.cn gitbub:https://github.com/x-extends/vxe-table gitee:htt…...
Spring-事务
Spring 事务 事务的基本概念 🔹 什么是事务? 事务是一组数据库操作,它们作为一个整体,要么全部成功,要么全部回滚。 常见的事务场景: 银行转账(扣款和存款必须同时成功) 订单系统…...
开源项目介绍:Native-LLM-for-Android
项目地址:Native-LLM-for-Android 创作活动时间:2025年 支持在 Android 设备上运行大型语言模型 (LLM) ,具体支持的模型包括: DeepSeek-R1-Distill-Qwen: 1.5B Qwen2.5-Instruct: 0.5B, 1.5B Qwen2/2.5VL:…...
vocabulary is from your listening,other speaking and your thought.
不要把单词放在自己的大脑里,放在自己的嘴巴里,自己在那疯狂重复的recite,its futile.只是单点记忆单词,记住也是temporary,而且是单点的记忆,当别人说此词汇,你也听不懂或分辨就是这个单词&…...
前端知识点---路由模式-实例模式和单例模式(ts)
在 ArkTS(Ark UI 框架)中,路由实例模式(Standard Instance Mode)主要用于管理页面跳转。当创建一个新页面时,可以选择标准实例模式(Standard Mode)或单实例模式(Single M…...
Matplotlib库中color 参数颜色有多少种
**当我们绘图超过十几种颜色。我都是 定义颜色列表( ** colors [blue, green, red, cyan, magenta, yellow, greenyellow, orange, purple, brown, pink, gray]1、 颜色名称 Matplotlib常用的颜色名称: red 或 r green 或 g blue 或 b yellow 或 y cy…...
LINUX虚拟机中,不能播放RTSP设备,怎么办
首先,主机能够打开RTSP设备。虚拟机无法打开。 虚拟机网络设置 桥接网卡,选择正确的网卡。 虚拟机IP设置 需要是同一个网段。交换机的设备是192.168.1.192 用ffplay测试...
宝塔的ssl文件验证域名后,会在域名解析列表中留下记录吗?
在使用宝塔面板进行SSL证书验证域名后,通常不会在域名解析列表中留下记录。验证过程中添加的TXT记录仅用于验证域名的所有权,一旦验证完成,就可以安全地删除这些记录,不会影响SSL证书的正常使用。根据搜索结果,DNS验证…...
mitt 依赖库详解
一、概述 mitt 是一个极其轻量级的 JavaScript 事件发射器库,实现了发布-订阅模式。该模式允许对象间松散耦合,一个对象(发布者)可以发布事件,而其他对象(订阅者)可以监听这些事件并作出响应。…...
OSPF网络类型:NBMA与P2MP
一、NBMA网络 NBMA网络的特点 连接方式: 支持多台设备连接到同一个网络段,但网络本身不支持广播或组播。典型例子:帧中继、ATM。 DR/BDR选举: 由于网络不支持广播,OSPF需要手动配置邻居。 仍然会选举DR(…...
VUE叉的工作原理?
Vuex 是 Vue.js 的一个专门用于状态管理的库,其工作原理基于单向数据流和集中式存储,旨在解决跨组件之间状态共享和管理的复杂性。以下是 Vuex 的核心工作原理及其关键组成部分: 核心概念 State(状态) Vuex 使用一个单…...
H.264语法结构分析之frame_cropping_flag
技术背景 开发者对接我们轻量级RTSP服务的时候,利用部分开源的播放器,播放流数据的时候,说分辨率不对,导致看到的图像有问题,用我们的player或常见的通用播放器,又都是好的,这就扯到了今天的主…...
【智能体】本地安装Conda和搭建OpenManus环境
整理不易,请不要令色你的赞和收藏。 1. 前言 没体验到 Manus?不妨使用 MetaGPT 开源的 OpenManus 搭建自己的 Manus。本文将带你安装 Conda 并搭建自己的 Manus。 2. 前提条件 已安装 conda,没安装的话,下文有介绍。 OpenManu…...
【linux网络编程】套接字编程API详细介绍
在C语言中,套接字(Socket)编程主要用于网络通信,尤其是在基于TCP/IP协议的应用程序开发中。常用的套接字编程API主要基于Berkeley Sockets(伯克利套接字)接口,这些函数通常在<sys/socket.h&g…...
杂项知识笔记搜集
1.pygame pygame可以画出来图形界面,pygame Python仓库 PyGame游戏编程_游戏程序设计csdn-CSDN博客 2.V4L2库 V4L2是Linux上的Camera采集器的框架 Video for Linux ,是从Linux2.1版本开始支持的。HDMI视频采集卡采集到的视频通过USB3.0输出࿰…...
模型微调——模型性能提升方法及注意事项(自用)
名词补充 人为为训练数据标注的标签称为黄金标准或真实值,这个过程一定程度上保证训练的准确性,但是其人工标注的成本和时间很高,并且标注的标签受人的主观因素影响。 导致模型性能不佳的因素和解决办法 ①不同类别的数据不平衡:统…...
RabbitMQ之旅(1)
相信自己,终会成功 目录 主流MQ产品 1.kafaka 2.RocketMQ 3.RabbitMQ 在xshell上安装RabbitMQ RabbitMQ七种工作模式 1.简单模式 编辑 2.工作队列模式 3.发布/订阅模式 4.路由模式 5.通配符模式 6.RPC模式 AMQP.BasicProperties 设置消息属性的类 7.发布确认模…...
TCP7680端口是什么服务
WAF上看到有好多tcp7680端口的访问信息 于是上网搜索了一下,确认TCP7680端口是Windows系统更新“传递优化”功能的服务端口,个人理解应该是Windows利用这个TCP7680端口,直接从内网已经具备更新包的主机上共享下载该升级包,无需从微…...
跟着 Lua 5.1 官方参考文档学习 Lua (11)
文章目录 5.4.1 – PatternsCharacter Class:Pattern Item:Pattern:Captures: string.find (s, pattern [, init [, plain]])例子:string.find 的简单使用 string.match (s, pattern [, init])string.gmatch (s, pattern)string.gsub (s, pattern, repl [, n])例子&…...
<script setup>和export default { setup() { ... } }区别
在 Vue 3 组合式 API(Composition API)中,<script setup> 和 export default setup() {} 都用于定义组件的逻辑,但它们有一些重要的区别: 1️⃣ <script setup>(推荐) ✅ 更简洁、…...
leetcode hot100--动态规划【五步总纲】
五步: 1.dp数组以及下标定义 dp[i] 2.递推公式 dp[n]dp[n-1]dp[n-2] 3.dp数组如何初始化 注意:判断边界条件,n0dp[1]就不存在【斐波那契】 4.遍历顺序 for循环顺序 5.打印数组【debug】 第一题:斐波那契数列 首先回顾了…...
RtlLookupAtomInAtomTable函数分析之RtlpAtomMapAtomToHandleEntry函数的作用是验证其正确性
第一部分: NTSTATUS RtlLookupAtomInAtomTable( IN PVOID AtomTableHandle, IN PWSTR AtomName, OUT PRTL_ATOM Atom OPTIONAL ) { NTSTATUS Status; PRTL_ATOM_TABLE p (PRTL_ATOM_TABLE)AtomTableHandle; PRTL_ATOM_TABLE_ENTRY a; …...
【从零开始学习计算机科学】硬件设计与FPGA原理
硬件设计 硬件设计流程 在设计硬件电路之前,首先要把大的框架和架构要搞清楚,这要求我们搞清楚要实现什么功能,然后找找有否能实现同样或相似功能的参考电路板(要懂得尽量利用他人的成果,越是有经验的工程师越会懂得借鉴他人的成果)。如果你找到了的参考设计,最好还是…...
todo: 使用融云imserve做登录(android)
使用融云做登录注册思路 注册界面需要name, email, password考虑到融云注册用户的post格式 POST http://api.rong-api.com/user/getToken.json?userId1690544550qqcom&nameIronman这里的userId可以使用用户的email,但是要截断和 . 符号,即1690544…...
从0开始的操作系统手搓教程23:构建输入子系统——实现键盘驱动1——热身驱动
目录 所以,键盘是如何工作的 说一说我们的8042 输出缓冲区寄存器 状态寄存器 控制寄存器 动手! 注册中断 简单整个键盘驱动 Reference ScanCode Table 我们下一步就是准备进一步完善我们系统的交互性。基于这个,我们想到的第一个可以…...
Azure云生态系统详解:核心服务、混合架构与云原生概念
核心服务:深入掌握Azure SQL Database、Azure Database for PostgreSQL、Azure Database for MySQL的架构、备份恢复、高可用性配置(如Geo-Replication、自动故障转移组、异地冗余备份)。混合架构:熟悉Azure Arc(管理混…...