当前位置: 首页 > news >正文

加解密算法相关技术详解

文章目录

    • 简介
    • 工作机制
      • 加解密
        • 对称密钥算法
        • 非对称密钥算法
      • 数字信封
      • 数字签名
      • 数字证书
      • 技术对比
    • 推荐阅读

简介

随着网络技术的飞速发展,网络安全问题日益重要,加解密技术是网络安全技术中的核心技术,是最常用的安全保密手段。

  • 加密:加密就是对原来为明文的文件或数据按某种算法进行处理,使其成为一段不可读的代码,通常称为 “密文”。从而达到保护数据不被非法窃取的目的。
  • 解密:解密就是加密的逆过程,即将密文转化为其原来明文的过程。

加密技术分为对称加密和非对称加密。

对称加密是指使用同一个密钥对数据进行解密;非对称加密是指用一对公私钥分别对数据进行加解密。

本文将介绍加解密技术,以及在加解密算法基础上衍生出来的数字信封、数字签名和数字证书技术。

工作机制

加解密

对称密钥算法

对称密钥算法又称为共享密钥算法,它使用同一个密钥对数据进行加密和解密。对称密钥算法加解密的过程如下图所示。
在这里插入图片描述
用户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

相关文章:

加解密算法相关技术详解

文章目录 简介工作机制加解密对称密钥算法非对称密钥算法 数字信封数字签名数字证书技术对比 推荐阅读 简介 随着网络技术的飞速发展,网络安全问题日益重要,加解密技术是网络安全技术中的核心技术,是最常用的安全保密手段。 加密&#xff1…...

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 调优工具的简单认知调优配置文件的简单说明,自定义调优方案介绍理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意&#xff…...

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)定义如下&#xff1a; f(n)1 n1,2; f(n)f(n-1)f(n-2) n>2; 给定n&#xff0c;求下式模1e97后的值 Input 第一行一个数字T&#xff0c;表示样例数 以下有T行&#xff0c;每行一个数&#xff0c;表示n。 保证T<100&#xff0c;n<100000…...

HTML设置标签栏的图标

添加此图标最简单的方法无需修改内容&#xff0c;只需按以下步骤操作即可&#xff1a; 1.准备一个 ico 格式的图标 2.将该图标命名为 favicon.ico 3.将图标文件置于index.html同级目录即可 为什么我的没有变化&#xff1f; 答曰&#xff1a;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-…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...