加密算法和身份认证

前瞻概念

在这里插入图片描述
在了解加密和解密的过程前,我们先了解一些基础概念

  • 明文:加密前的消息叫 “明文” (plain text)
  • 密文: 加密后的文本叫 “密文” (cipher text)
  • 密钥: 只有掌握特殊“钥匙”的人,才能对加密的文本进行解密,这里的"钥匙" 就叫做 “密钥”

    “密钥” 就是一个字符串, 度量单位是"位" (bit), 比如,密钥长度是128,就是16字节的二进制串

  • 按照密钥的使用方式,加密可以分为两大类:对称加密非对称加密

对称加密

在这里插入图片描述

  • 特点:只有一个密钥,密钥必须保密,常用的有 AES 算法

    除了AES 加密外,还有一种加密分组的模式,就是明文进行分组加密,其中微信支付中使用的是 AEAD_AES_256_GCM

  • 优点:运算速度快

  • 缺点:秘钥需要信息交换的双方共享,一旦被窃取,消息会被破解,无法做到安全的密钥交换

非对称加密

在这里插入图片描述

  • 特点:使用两个密钥,公钥和私钥,公钥可以任意分发而私钥需要保密,常见的算法为 RSA加密

    Tips: 使用公钥加密后只能使用私钥解密,反过来,私钥加密后也只能用公钥解密。

  • 优点:黑客获取公钥无法破解密文,解决了密钥交换问题

  • 缺点:运算速度非常慢

补充说明:
在实际的场景中,通常都是把对称加密非对称加密结合起来使用的。因为非对称加密的运算速度慢,对称加密的密钥存在被窃取风险。
通信时,可以先通过非对称加密的方式传输对称加密中的密钥,这样子就不存在被窃取的风险;然后再通过私钥解密得到对称加密的密钥,最后就可以正常使用对称加密的方式进行数据传输了。这样子大幅度提升效率和保障安全性。

身份认证

下面有一种场景,Bob 和他的朋友们要进行信件通信,为了保障安全性,他们使用了公钥加密,私钥解密的方式。
在这里插入图片描述
图一表示 Bob保留了自己的私钥,并把公钥分发给了他的朋友们

在这里插入图片描述
图二表示 Susan 写信时,使用 Bob 的公钥加密后发送。此时Bob收到信件后,用自己的私钥解密后得到信件内容。
同理 Bob的回信,也是使用 Susan的公钥加密,而Susan读信的话就用自己的私钥解密。

从上面的场景不难看出公钥加密,私钥解密的主要作用就是加密信息。那如果我们使用私钥加密,公钥解密的作用又是什么呢?

在这里插入图片描述
图3中,Bob用自己的私钥加密信件后发送,不难看出只要拥有 Bob的公钥,任何人都能知道信件内容,显然并没有起到加密信息的作用

在这里插入图片描述
图4和图3是同个场景,但只要信件内容能用 Bob 的公钥进行解密的话,就能确定这封信是Bob写的,这里其实起到了一个身份认证的作用。

私钥加密,公钥解密的作用是身份认证。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MFC】计算机图形学实验:熟悉开发环境及工具(代码)

实验内容: 【MFC】计算机图形学实验1:熟悉开发环境及工具_绘制多义线mfc-CSDN博客 画笔和字体只给出两处代码: //创建刷子,设置填充色为黑色 CBrush NewBrush; NewBrush.CreateSolidBrush(RGB(0, 0, 0)); pDC->SelectObjec…

CNN——VGG

1.VGG简介 论文下载地址:https://arxiv.org/pdf/1409.1556.pdf VGGNet 是由牛津大学视觉几何小组(Visual Geometry Group, VGG)提出的一种深层卷积网络结构,他们以 7.32% 的错误率赢得了 2014 年 ILSVRC 分类任务的亚军&#xff…

k8s yaml文件pod的生命周期

Pod是k8s中最小限额资源管理组件,也是最小化运行容器化的应用的资源管理对象。 Pod是一个抽象的概念,可以理解为一个或者多个容器化应用的集合。 在一个pod当中运行一个容器是最常用的方式。 在一个pod当中同时运行多个容器,在一个pod当中…

jupyter更改默认路径到其它的目录或者到其它的盘 比如D盘

1.打开终端 输入jupyter notebook --generate-config 如下 2.在C:\Users\mb5958\.jupyter路径下 3.用记事本打开它,搜索directory 4.在你想要的路径下新建一个文件夹,如‘D:\jupyterFile’,然后将路径名放在c.NotebookApp.notebook_dir"…

Spring见解 1.2

2.3.Spring的IOC解决程序耦合 2.3.1.创建工程 2.3.1.1.pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sc…

Python 快速合并PDF表格转换输出CSV文件

单位的刷脸考勤机后台系统做得比较差&#xff0c;只能导出每个部门的出勤统计表pdf&#xff0c;格式如下&#xff1a; 近期领导要看所有部门的考勤数据&#xff0c;于是动手快速写了个合并pdf并输出csv文件的脚本。 安装模块 pypdf2&#xff0c;pdfplumber&#xff0c;前者用…

华清远见作业第二十一天——IO(第四天)

思维导图&#xff1a; 创建出三个进程完成两个文件之间拷贝工作&#xff0c;子进程1拷贝前一半内容&#xff0c;子进程2拷贝后一半内容&#xff0c;父进程回收子进程的资源。 代码&#xff1a; #include<myhead.h> int main(int argc, const char *argv[]) {if(argc!3)…

使用results.csv文件数据绘制mAP对比图

yolov5每次train完成&#xff08;如果没有中途退出&#xff09;都会在run目录下生成expX目录&#xff08;X代表生成结果次数 第一次训练完成生成exp0 第二次生成exp1…以此类推&#xff09;。expX目录下会保存训练生成的weights以及result.txt文件&#xff0c;其中weights是训练…

freeRTOS——队列集知识总结及实战

1队列集概念 可以在任务间传递不同数据类型的消息 作用&#xff1a;用于对多个队列或信号量进行“监听”&#xff0c;其中不管哪一个消息到来&#xff0c;都可让任务退出阻塞状态 2队列集API函数 1&#xff09;创建队列集 QueueSetHandle_t xQueueCreateSet( const UBaseType…

调用百度地图 API 的步骤详解

百度地图 Web 服务 API 为开发者提供 http/https 接口&#xff0c;即开发者通过 http/https 形式发起检索请求&#xff0c;获取返回 json 或 xml 格式的检索数据。用户可以基于此开发 JavaScript、C#、C、Java 等语言的地图应用。百度地图 API 在线地址为&#xff1a;baidumap.…

C#使用switch多路选择语句判断何为季节

目录 一、 switch语句 二、示例 三、生成 一、 switch语句 switch语句是多路选择语句&#xff0c;它通过一个表达式的值来使程序从多个分支中选取一个用于执行的分支。 switch表达式的值只可以是整型、字符串、枚举和布尔类型。 switch语句中多个case可以使用一个break。 在…

氢燃料电池——产品标准规范汇总和梳理

文章目录 氢燃料电池模块 氢燃料电池发动机 氢燃料电池汽车 加氢系统 总结 氢燃料电池模块 GB/T 33978-2017 道路车辆用质子交换膜燃料电池模块 GB/T 43361-2023 气体分析 道路车辆用质子交换膜燃料电池氢燃料分析方法的确认 GB/T 29729-2022 氢系统安全的基本要求 GB/T 4…