加解密算法相关技术详解
文章目录
- 简介
- 工作机制
- 加解密
- 对称密钥算法
- 非对称密钥算法
- 数字信封
- 数字签名
- 数字证书
- 技术对比
- 推荐阅读
简介
随着网络技术的飞速发展,网络安全问题日益重要,加解密技术是网络安全技术中的核心技术,是最常用的安全保密手段。
- 加密:加密就是对原来为明文的文件或数据按某种算法进行处理,使其成为一段不可读的代码,通常称为 “密文”。从而达到保护数据不被非法窃取的目的。
- 解密:解密就是加密的逆过程,即将密文转化为其原来明文的过程。
加密技术分为对称加密和非对称加密。
对称加密是指使用同一个密钥对数据进行解密;非对称加密是指用一对公私钥分别对数据进行加解密。
本文将介绍加解密技术,以及在加解密算法基础上衍生出来的数字信封、数字签名和数字证书技术。
工作机制
加解密
对称密钥算法
对称密钥算法又称为共享密钥算法,它使用同一个密钥对数据进行加密和解密。对称密钥算法加解密的过程如下图所示。

用户A和用户B协商好对称密钥后,加解密过程如下:
① 用户A使用对称密钥将明文加密,并将密文发送给用户B。
② 用户B收到密文后,用对称密钥对密文进行解密,得到最初的明文。
非对称密钥算法
非对称密钥算法又称为公钥加密算法。每个用户都拥有两个密钥:一个可对外界公开,称为“公钥”;一个只有所有者知道,称为“私钥”。
公钥和私钥配合使用,一个用于加密,一个用于解密。通常发送方以接收方的公钥作为加密密钥,接收方使用自己的私钥作为解密密钥。非对称密钥算法加解密的过程如下图所示。

用户A获得用户B的公钥后,加解密过程如下:
① 用户A使用用户B的公钥对明文加密,并将密文发送给用户B。
② 用户B收到密文后,用自己的私钥对密文进行解密,得到最初的明文。
数字信封
数字信封技术结合了对称加密算法和非对称加密算法的优点,发送方首先利用对称密钥加密明文,再利用接收方的公钥加密对称密钥,被接收方公钥加密后的对称密钥被称为数字信封。
接收方收到信息后,若要解密信息,必须先用自己的私钥解密数字信封,得到对称密钥,才能利用对称密钥解密收到的信息。数字信封的加解密过程如下图所示。

用户A获得用户B的公钥后,加解密过程如下:
① 用户A使用对称密钥对明文加密,生成密文。
② 用户A使用用户B的公钥加密对称密钥,生成数字信封。
③ 用户A将数字信封和密文信息一起发送给用户B 。
④ 用户B接收到用户A发送的加密信息后,使用自己的私钥打开数字信封,得到对称密钥。
⑤ 用户B使用对称密钥对密文进行解密,得到最初的明文。
数字签名
为了进一步提升加密算法传输数据的可靠性(防止数据被篡改),数字签名技术应运而生。发送方用自己的私钥加密摘要(对明文进行哈希得到)得到数字签名,可根据实际是否存在保证数据私密性的需求,选择发送明文或者密文给接收方。
-
若无需保证传输数据的私密性,直接将明文和数字签名一起发给接收方。
-
若需要保证传输数据的私密性,可根据上文中对称加密和非对称加密的特点,选择其中一种加密算法加密明文生成密文,将密文和数字签名一起发给接收方。
接收方收到后,执行以下操作:
a) 使用与发送方相同的哈希算法对收到或者解密得到的明文进行哈希,得到摘要。
b) 使用发送方的公钥解密数字签名得到摘要。
c) 将上述两个步骤中的摘要进行对比:- 如果一致,则表示收到的明文没有未被篡改,是完整可信的。
- 如果不一致,则表示收到的明文已被篡改,是不可信。
下图以非对称加密与数字签名结合为例,说明数字签名的加密过程。

用户A获得用户B的公钥后,加解密过程如下:
① 用户A使用用户B的公钥对明文加密,生成密文。
② 用户A使用哈希算法对明文进行哈希计算,生成摘要信息。
③ 用户A使用自己的私钥对摘要信息进行加密,生成数字签名。
④ 用户A将密文和数字签名一起发送给用户B。
⑤ 用户B使用用户A的公钥对数字签名进行解密,得到摘要信息。
⑥ 用户B接收到用户A的加密信息后,使用自己的私钥对密文进行解密,得到最初的明文。
⑦ 用户B使用与用户A相同的哈希算法对明文进行哈希计算,生成摘要信息。
⑧ 用户B将生成的摘要信息与从A收到的摘要信息进行比对。
- 如果一致,表示明文未经过篡改,则接受明文。
- 如果不一致,表示明文被篡改过,则丢弃明文。
数字证书
在应用公钥的加解密技术(非对称加密、数字信封、数字签名)中,由于无法保证公钥来源的可靠性(加解密使用的公钥一定属于指定所属者),从而存在安全隐患。以数字签名技术为例,攻击者使用自己的公钥替换了接收方本地保存的发送方公钥,将伪造的信息和用自己私钥加密得到的数字签名发给接收方,接收方使用本地保存的发送者的公钥(已被替换为攻击者的公钥)可以正常进行解密以及数据完整性校验,导致接收方无法甄别收到的消息为伪造的信息。
为了确保公钥来源的可靠性,公钥需要经过权威机构CA (Certificate Authority,证书颁发机构)认证后,才能被认为是可靠性的。
数字证书遵循X.509 V3标准,包含证书签发者名称、持有者名称、公钥信息、CA对证书的数字签名、证书的有效期等多个字段。数字证书的结构如下图所示。

技术对比
对称加密算法和非对称加密算法为整个加解密技术的基础,在实际使用中,可参照下表中列出的优缺点结合实际需求进行选择。
| 加密算法 | 优点 | 缺点 |
|---|---|---|
| 对称加密算法 | 1,加密效率高、速度快 2,适用于对大量数据进行加密 | 需要通信时,密钥多不便于管理: •每对通信用户之间都需要协商密钥 •所需交换的密钥数量庞大•密钥交换时,有泄漏风险 |
| 非对称加密算法 | 需要通信时,密钥少便于管理:•每对通信用户之间都无需协商密钥(每个通信方只需一对密钥,即可与多个其他方通信) •所需密钥交换的数量少(公钥可批量对外发布,私钥自己保存) | •加密效率低、耗时长 •适用于对少量数据进行加密 |
基于对称加密和非对称加密算法衍生出来的应用技术的作用及优势如下表所示。
| 技术类型 | 作用及优势 |
|---|---|
| 数字信封 | 用于确保数据传输的私密性,结合了两种加密技术的优点:•通过对称加密算法加密明文,加密耗时短、效率高 •通过非对称加密算法加密对称密钥,确保对称密钥传递的可靠性 |
| 数字签名 | 用于确保数据传输的完整性,提升数据传输的可靠性,确保收到的数据信息未经过篡改 |
| 数字证书 | 用于确保公钥来源的可靠性,通过权威机构CA签发证书方 式解决了无法确定公钥属于指定拥有者的问题 |
推荐阅读
- 善用exchange server自带的反垃圾邮件功能过滤垃圾邮件
- 为 WinHTTP 配置SSL\TLS安全协议
- 剖析AI诈骗成立的前提条件将有助于制定更有效的对策来防范AI诈骗
- Wi-Fi 6和5G 在应用场景上的区别
- HTTP状态码504(Gateway Timeout)报错原因分析和解决办法
- Ubuntu挂载NFS(Network File System) ,怎么解决权限不一致的问题?
- 专门为Web应用程序提供安全保护的设备-WAF
相关文章:
加解密算法相关技术详解
文章目录 简介工作机制加解密对称密钥算法非对称密钥算法 数字信封数字签名数字证书技术对比 推荐阅读 简介 随着网络技术的飞速发展,网络安全问题日益重要,加解密技术是网络安全技术中的核心技术,是最常用的安全保密手段。 加密࿱…...
Clickhouse学习笔记(13)—— Materialize MySQL引擎
该引擎用于监听 binlog 事件,类似于canal、Maxwell等组件 ClickHouse 20.8.2.3 版本新增加了 MaterializeMySQL 的 database 引擎,该 database 能映射到 MySQL中的某个database ,并自动在ClickHouse中创建对应ReplacingMergeTree。 ClickHous…...
《QT从基础到进阶·二十四》按钮组QButtonGroup,单选框QRadioButton和多选框QCheckBox
1、按钮组QButtonGroup 如果有多个单选按钮,可以统一放进一个按钮组。 图中有三个单选按钮放进了一个QGroupBox,并且设置了水平布局,现在要将这三个单选按钮放进一个按钮组,之前的想法是先把三个按钮加入按钮组,再把按钮组放进QG…...
Ansible--playbook剧本
目录 一、playbook: playbook的组成: palybook的编写注意事项 二、playbook的编写格式(示例) 2.1 编写yaml文件 2.2 定义、引用变量 2.3 指定远程主机sudo切换用户 2.4 when条件判断 2.5 迭代 2.6 Templates 模块 2.7 tags 模…...
MacOS下VMware Fusion配置静态IP
前言 在虚拟机安装系统后,默认是通过DHCP动态分配的IP,这会导致每次重启虚拟机ip都可能会改变,使用起来会有很多不便。 配置静态IP 查看主机网关地址 cat /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf 查看主机DNS,m…...
三、机器学习基础知识:Python常用机器学习库(中文文本分析相关库)
文章目录 1、Jieba库1.1 主要函数1.2 词性标注1.3 关键词提取 2、WordCloud库2.1 常见参数2.2 词云绘制 文本分析是指对文本的表示及其特征的提取,它把从文本中提取出来的特征词进行量化来表示文本信息,经常被应用到文本挖掘以及信息检索的过程当中。 1、…...
Nginx 使用笔记大全(唯一入口)
Linux服务器因为Nginx日志access.log文件过大项目无法访问 项目处于运行状态下无法访问,第一步查看磁盘状态 1、查看磁盘状态 df -h 2、查找100M以上的文件 find / -size 100M |xargs ls -lh 3、删除文件 rm -rf /usr/local/nginx/logs/access.log 4、配置nginx.…...
数据结构-二叉排序树(建立、查找、修改)
二叉排序树概念 二叉排序树是动态查找表的一种,也是常用的表示方法。 其中,它具有如下性质: 1.若它的左子树非空,则其左子树的所有节点的关键值都小于根节点的关键值。 2.若它的右子树非空,则其右子树的所有节点的…...
Linux 性能优化之使用 Tuned 配置优化方案
写在前面 考试整理相关笔记博文内容涉及 Linux tuned 调优工具的简单认知调优配置文件的简单说明,自定义调优方案介绍理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意ÿ…...
Day02_《MySQL索引与性能优化》
文章目录 一、SQL执行顺序二、索引简介1、关于索引2、索引的类型Btree 索引Btree 索引 三、Explain简介四、Explain 详解1、id2、select_type3、table4、type5、possible_keys6、key7、key_len8、ref9、rows10、Extra11、小案例 五、索引优化1、单表索引优化2、两表索引优化3、…...
(只需三步)Vmvare tools安装教程,实现与windows互通复制粘贴与文件拖拽
首先确保Ubuntu是联网的,如果连不上网可以参考我的这个联网教程,也很简单 (只需三步)虚拟机上vm的ubuntu不能联上网怎么办-CSDN博客 第一步:卸载之前的tools,确保没有残留 sudo apt-get autoremove open-vm-tools 第…...
Android自定义控件:一款多特效的智能loadingView
先上效果图(如果感兴趣请看后面讲解): 1、登录效果展示 2、关注效果展示 1、【画圆角矩形】 画图首先是onDraw方法(我会把圆代码写上,一步一步剖析): 首先在view中定义个属性:priv…...
C语言之初阶指针
一、指针: 其实按照我的理解,当我们写c语言程序的时候,创建的变量,数组等都要在内存上开辟空间。而每一个内存都有一个唯一的编号,这个编号也被称为地址编号,就相当于,编号地址指针。 二、指针…...
MongoDB基础知识~
引入MongoDB: 在面对高并发,高效率存储和访问,高扩展性和高可用性等的需求下,我们之前所学习过的关系型数据库(MySql,sql server…)显得有点力不从心,而这些需求在我们的生活中也是随处可见的,例如在社交中…...
41. 缺失的第一个正数
给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1: 输入:nums [1,2,0] 输出:3示例 2: 输入:nums [3…...
数据结构—数组栈的实现
前言:各位小伙伴们我们前面已经学习了带头双向循环链表,数据结构中还有一些特殊的线性表,如栈和队列,那么我们今天就来实现数组栈。 目录: 一、 栈的概念 二、 栈的实现 三、 代码测试 栈的概念: 栈的概念…...
AI大模型低成本快速定制秘诀:RAG和向量数据库
文章目录 1. 前言2. RAG和向量数据库3. 论坛日程4. 购票方式 1. 前言 当今人工智能领域,最受关注的毋庸置疑是大模型。然而,高昂的训练成本、漫长的训练时间等都成为了制约大多数企业入局大模型的关键瓶颈。 这种背景下,向量数据库凭借其独特…...
Please No More Sigma(构造矩阵)
Please No More Sigma 给f(n)定义如下: f(n)1 n1,2; f(n)f(n-1)f(n-2) n>2; 给定n,求下式模1e97后的值 Input 第一行一个数字T,表示样例数 以下有T行,每行一个数,表示n。 保证T<100,n<100000…...
HTML设置标签栏的图标
添加此图标最简单的方法无需修改内容,只需按以下步骤操作即可: 1.准备一个 ico 格式的图标 2.将该图标命名为 favicon.ico 3.将图标文件置于index.html同级目录即可 为什么我的没有变化? 答曰:ShiftF5强制刷新一下网页就行了...
4.CentOS7安装MySQL5.7
CentOS7安装MySQL5.7 2023-11-13 小柴你能看到嘛 哔哩哔哩视频地址 https://www.bilibili.com/video/BV1jz4y1A7LS/?vd_source9ba3044ce322000939a31117d762b441 一.解压 tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz1.在/usr/local解压 tar -xvf mysql-5.7.44-…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
