对称加密算法和非对称加密算法

news2025/3/31 7:18:45

        在这个互联网普及的时代,在不同终端对敏感甚至机密数据进行传输是非常常见的场景,但是如何保证数据传输过程的安全性和高效性是一个值得深入探讨的问题。

为此,伟大的人类研究出了多种加密算法,我们可以大致将其分为两类

  • 对称加密算法

  • 非对称加密算法

为了对上述两类算法进行学习分析,我们将采用以下名词代称:

  • 发送方:即对数据进行加密并进行发送的一方。

  • 接收方:即对加密数据进行接收并解密的一方。

了解了以上内容,那让我们来思考一下,如果让你来进行敏感机密数据的加密传输,你会怎么做?

“那必然是两方同时约定一个密码,然后发送方用这个密码进行加密,再发送出去,然后接收方接收到之后再用这个密码对数据进行解密咯~”

好的,恭喜你~发明出了伟大的对称加密算法!

好了,那让我们来具体了解一下对称加密算法吧~

对称加密算法

1 概念:

即采用单秘钥对数据进行加密的算法,加密和解密使用的都是同一个秘钥

这里说的秘钥,就是我们刚刚提到的双方共同约定的密码~

2.原理:

如上图所示:

  1. 由发送方制定秘钥,而后发送给接收方。

  2. 发送方使用秘钥对数据进行加密,而后将加密数据发送给接收方。

  3. 接收方接收到加密数据后,使用之前收到的秘钥对加密数据进行解密。

3.优点:

这类加密算法的好处显而易见啊

  • 简单

  • 加密计算量小,加密速度快,故而适用于大量数据加密的场景

4.缺点

坏处呢?

  • 不安全

有人可能要疑惑了,那就让我们来详细讲讲不安全在什么地方吧~

主要是两个地方:秘钥的传输秘钥的保管

因为加密和解密使用的都是同一个秘钥,故而对秘钥的传输和保管都至关重要,稍有不慎导致秘钥泄漏那不就GG了吗。

也就是说,对称加密算法的安全性不仅在于算法的复杂性,而且依赖于秘钥的保密性!即使使用强大的对称加密算法,如果密钥被泄露或破解,加密内容就能被轻松解密。

  • 秘钥的传输:指发送方如何安全地将秘钥传递到接受方的问题。

让我们来想想这样一个场景,在远在外地出差的小明有一份重要的机密文件要立马交给小红。由于文件十分机密,为了防止黑客在发送过程中对机密数据进行截取破译篡改,小明就想到了,"我用密码对机密文件进行加密,再发送给小红,这样黑客没有密码就破解不了我的文件了呀~" 小明心想,朕实乃天才呀!好的,聪明的小明就这样兴高采烈地加密完成了,而后立马把加密完成的文件发送给小红,小红很快就收到了加密文件,但此时打开文件的小红可谓是一脸懵逼,怎么还要输密码呀,也妹人告诉我密码啊,这看个毛啊,立马就找到小明说,“这个文件看不了啊,密码呢?”于是乎小明立马就将密码发送给了小红,好了这下子小红终于可以查看机密文件了。

好了,故事讲完了,有人发现这其中的BUG了吗?相信聪明的你肯定想到了,嗯 小明这下子真是加密了个寂寞。

文件是加密了的,密码是泄漏了的,一旦黑客拦截到他发送给小红的密码,这不就寄了吗!考虑到了机密文件传输过程的安全性,但是没有考虑到密码传输过程的安全性!

但是,当然了,此处只是举了一个浅显易懂的例子,现实中没有这么蠢的操作哈,一般使用对称加密算法时对秘钥进行传输的时候考虑的因素肯定不止上面这么简单,这也是一个热门的研究方向,感兴趣的同学可以自行学习。

  • 秘钥管理:指秘钥如何在双方进行安全存储和管理的问题。

好了,现在我们假设,上面小故事中的小明没有泄漏秘钥,秘钥很安全地到达了小红这边,那么现在作为秘钥唯二的持有者之一的聪明的小明开始思考了,这个密码这么重要,可不能就直接的存储在我的电脑上,我一定要对这个密码进行二次加密,就像加密那个机密文件一样,对这个密码再进行一次对称加密。于是乎,小明付诸实践,开始行动!

很快问题一出现了,小明对密码1进行对称加密,还要用到一个密码2, 而后又要再用到一个密码3对这个密码2进行对称加密,......反反复复,重复了很多次,小明终于发现了,哇靠,这不是死循环吗!小明懵逼了,算了,就这样吧。

而另一边的小红比较善于思考,她也想到了要对密码进行加密存储,但是她很快就想到了上述小明遇到的问题,且她很快意识到,就算使用对称算法对密码进行加密,那本质上密码每次传输都会暴露啊,所以为了安全性,小明每次传输一个加密文件给她,都要制定一个新的密码,又要对这个密码进行保管(加密),随着密码数量的增加,也不好管理啊,于是乎她很快就否定了用对称加密算法对密码进行加密的方案。

好了,通过上面的小故事,相信大家也对对称加密的缺点了然于心了,那可能就有同学要问了,那如何解决上述小故事中小明和小红遇到的问题呢?

答案呼之欲出,那就是采用非对称加密算法

非对称加密算法

1.概念:

即采用双秘钥对数据进行加密解密的算法,加密和解密使用的是不同的秘钥。

双秘钥指的分别是:公钥和私钥

一般情况下:公钥用于加密,私钥用于解密。

公钥:顾名思义,公开的钥匙,用于加密数据,且公钥一般由私钥生成

私钥:顾名思义,私有的钥匙,用于解密数据

2.原理:

如上图所示:

  1. 由接收方制定私钥并由私钥生成公钥,而后发送给发送方。

  2. 发送方根据接受到的公钥,对数据进行加密,而后再将加密后的数据发送给接受方。

  3. 接收方接收到加密数据后,使用私钥对加密数据进行解密。

3.优点:

(1)解决对称加密算法中的秘钥传输问题:

在这个加密数据传输的过程中,用于解密的私钥始终是没有在网络中进行传输的,也就是不涉及对称加密中秘钥传输的安全性问题,所以也就解决了对称加密中的问题一

(2)解决对称加密算法中的秘钥管理问题:

接下来,我们来分析一下,非对称加密是如何解决对称加密的问题二:秘钥管理的。

在上面的小故事中,小明对秘钥的保管采用的是对称加密,这样的秘钥管理方案的问题在于:

  1. 不安全:必须保证保护加密密钥的密钥(通常称为"密钥加密密钥")的安全性。如果该密钥泄露,那么整个加密体系的安全性就遭到破坏。

  2. 多层密钥管理:如果在系统中使用多个对称密钥进行不同数据的加密,就必须管理每个加密密钥的保护和存储。而一旦这些密钥本身也被加密存储,那么每个密钥的加密密钥也需要得到保护,导致需要管理多个层级的密钥。

所以秘钥的保管方案绝对不能采用对称加密算法,那采用非对称加密算法究竟是如何解决问题二:秘钥管理的呢?

假设现在小明和小红采用的是非对称加密算法进行加密数据传输,也就是说,私钥只在小红(接收方)这边持有,整个过程如下:

  1. 由小红制定一个私钥并据此生成一个公钥,将公钥发送给小明(发送方),

  2. 小明使用公钥对数据进行加密,而后将加密后的数据发送给小红,

  3. 小红再使用私钥对加密数据进行解密。

可以看到,上述整个过程中,用于解密的私钥都是没有暴露在传输过程中的,只有小红有,所有就只有小红(接收方)这边需要考虑秘钥保管的问题了,是不是就已经加强了安全性。

再者,由于私钥本身是只有小红持有的,以后小明和小红再进行机密文件的传输时也就不用再制定新的私钥和公钥了,只复用这一对秘钥即可。也就解决了多层秘钥管理的问题,小红只需要考虑对持有的私钥的保管即可。

若进一步的,小红对私钥的保管采用非对称加密算法,那就更安全了。

4.缺点:

  • 算法复杂

  • 计算效率较低,加密和解密的效率都很低

5.不一般情况下的非对称算法:

公钥用于解密数据,私钥用于加密数据

这种情况通常用于验证数据的完整性和来源,最经典的例子就是数字签名。例如:一个软件公司对其发布的一个应用生成一个对应的数字签名,以供消费者验证这个软件是正版的。

数据签名的基本流程如下:

  1. 软件公司对其应用进行一个哈希运算得到一串哈希值,而后使用私钥对这串哈希值进行加密,且公开公钥,与应用一起打包上市。

  2. 消费者此时在一个应用市场下载到了这个软件,就可以通过软件公司公开的公钥对数字签名进行解密,得到应用的哈希值。

  3. 而后对下载的应用进行哈希运算,得到现在应用的哈希值,将第2步中获得的哈希值与此哈希值进行对比

  4. 若一致,则应用数据完整且是正版的

  5. 若不一致,则说明应用数据可能被篡改过,不是正版软件。

总结

        通过上述的一系列分析,我们可以了解到,对称加密算法与非对称加密算法各有好坏,对称加密虽然没那么安全但效率高,非对称加密虽然安全性高但低效,所以在现实生活中我们一般会采用对称加密和非对称加密结合的方式进行数据的加密传输。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2323788.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络】OSI七层模型完全指南:从比特流到应用交互的逐层拆解

OSI模型 导读一、概念二、模型层次结构2.1 物理层(Physical Layer)2.2 数据链路层(Data Link Layer)​2.3 ​网络层(Network Layer)​2.4 ​传输层(Transport Layer)​2.5 ​会话层&…

数据不互通、审批慢?如何实现多系统智能协同

在企业信息化建设的过程中,数据孤岛和复杂的审批流程常常成为实现高效协同的巨大障碍。对于许多组织来说,面对越来越复杂的业务需求,如何实现多系统智能协同不仅关乎效率,更直接影响企业的竞争力。 数据不互通和审批流程慢的痛点…

如何用 Postman 正确传递 Date 类型参数,避免服务器解析错误?

如何在 Postman 中传递 Date 类型参数。调试工具如何模拟发送用户端的当前时间呢? Postman 传递 Date 类型参数教程

JUC 03

今天是2025/03/28 20:46 day 14 总路线请移步主页Java大纲相关文章 今天进行JUC 6,7,8 个模块的归纳 首先是JUC的相关内容概括的思维导图 由于内容比较多且重要, 个人还整理了一份详细JUC的思维导图,需要的请评论。是 xmind文件 6. 锁机制 深入解析…

CentOS 7 部署RuoYi 项目

换源 备份现有的 YUM 源配置文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 默认的 CentOS 官方镜像源替换为阿里云的镜像源,以提高下载速度和稳定性。 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.co…

【JavaScript】八、对象

文章目录 1、对象的声明2、对象的使用3、对象中的方法4、遍历对象5、内置对象Math 1、对象的声明 一种数据类型,使用typeof查看类型,结果是object可以详细的描述描述某个事物 声明语法: // 多用花括号形式声明 // 比如声明一个person对象 …

Processor System Reset IP 核 v5.0(vivado)

这个IP的作用,我的理解是,比普通按键复位更加高效灵活,可以配置多个复位输出,可以配置复位周期。 1、输入信号: 重要的信号有时钟clk信号,一般连接到系统时钟;输入复位信号,一般是外…

linux0.11内核源码修仙传第十一章——硬盘初始化

🚀 前言 本文是初始化最后一部分了,对硬盘的初始化,对应于书中的第20回。希望各位给个三连,拜托啦,这对我真的很重要!!! 目录 🚀 前言🏆块设备管理&#x1f3…

包络解调在故障诊断中的应用-广义检波解调案例

前言 前面我们曾介绍过广义检波解调的原理,那么今天就将学过的知识点真正用在故障诊断上,由于工厂数据集不能轻易获取,因此通过实验室仿真数据集来介绍整个诊断流程。 数据集 加拿大渥太华是故障诊断领域蛮出名的一个数据集,其…

喜报|迪捷软件入选工信部“2024年信息技术应用创新解决方案”

为进一步深化行业信息技术应用创新,健全信息技术应用创新产业生态,加快新技术新产品应用推广,强化应用牵引和需求导向,加强区域联动和资源整合,工业和信息化部网络安全产业发展中心(工业和信息化部信息中心…

2.Python 计算机二级题库:选择题答案解析

一 对 题目1 题目2 题目3 补充:在 Python 中,数字类型的复数类型是 complex。 题目4 题目5 题目6 题目7 题目8 题目9 题目10 题目11 题目12 题目13 题目14 题目15 题目16 题目17 题目18 题目19 题目20 题目21 题目22 题目23 题目24 题目25 题目26 题目27…

使用Selenium和lxml库搜房网爬取某地区房屋信息(python、pycharm爬虫)

一、地址: url "https://zb.newhouse.fang.com/house/s/b91" # 第一页的 URL 但是这个爬虫我不知道为啥总是翻不了页数,请帮忙修改一下~ 二、用到的知识点以及代码详解: 这段代码是一个使用Selenium和lxml库实现的网页爬虫&a…

大模型训练过程中KVCache与MLA

基础内容 在Transformer模型中,每个token有qkv三个属性,分别通过神经网络变换得到。1 根据Transformer中注意力公式,每个token的q需要和之前所有的k计算注意力,然后经过Softmax函数后乘以之前所有token的V,得到最终的…

材质及制作笔记

基本流程: 建中模——zb雕刻高模——maya拓扑低模——拆uv——sp烘焙贴图——sp绘制材质——渲染 1 材质贴图: diffuse/albedo/basecolor:漫反射 reflection/specular:反射 metalness:金属度 glossiness&#xf…

语音机器人与智能体结合

自从春节期间deepseek的发布,大家对语音机器人接入大模型格外的关注。最近又收到一个需求,是语音机器人与智能体的结合。 什么是智能体? 智能体(Agent)是指能够感知环境并采取行动以实现目标的实体。根据其复杂程度&am…

Axios企业级封装实战:从拦截器到安全策略!!!

🚀 Axios企业级封装实战:从拦截器到安全策略 🔧 核心代码解析 // 创建Axios实例 const service axios.create({baseURL: api, // 🌐 全局API前缀timeout: 0, // ⏳ 永不超时(慎用!)withCrede…

Zerotier虚拟局域网在树莓派的应用和Syncthing配合Zerotier实现端到端文件同步

一、Zerotier的部署 1、官网注册账号 https://my.zerotier.com/i 2、选择linux系统,执行安装Zerotier curl -s https://install.zerotier.com | sudo bash3、将树莓派网络加入Zerotier zerotier-cli join DB62228FEDF6CE55DB62228FEDF6CE55 为你的Zerotier IP 需…

51c嵌入式~三极管~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/12208603 一、PNP与NPN两种三极管使用方法 分享这篇文章总结下关于NPN和PNP两种型号三极管的使用和连接方法。 在单片机应用电路中三极管主要的作用就是开关作用。 PNP与NPN两种三极管使用方法 上图中,横向左…

SQL中累计求和与滑动求和函数sum() over()的用法

[TOC](SQL中累计求和与滑动求和函数sum() over()的用法) 一、窗口函数功能简介 sum(c) over(partition by a order by b) 按照一定规则汇总c的值,具体规则为以a分组,每组内按照b进行排序,汇总第一行至当前行的c的加和值。 sum()&#xff1a…

【Sql Server】在SQL Server中生成雪花ID(Snowflake ID)

大家好,我是全栈小5,欢迎来到《小5讲堂》。 这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 前言认识雪花ID…