加密算法和身份认证

前瞻概念

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

  • 明文:加密前的消息叫 “明文” (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.mzph.cn/news/597477.shtml

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

相关文章

【深度学习:(Contrastive Learning) 对比学习】深入浅出讲解对比学习

对比学习允许模型从未标记的数据中提取有意义的表示。通过利用相似性和不相似性,对比学习使模型能够在潜在空间中将相似的实例紧密地映射在一起,同时将那些不同的实例分开。这种方法已被证明在计算机视觉、自然语言处理 (NLP) 和强…

STM32和ESP8266的WiFi模块控制与数据传输

基于STM32和ESP8266 WiFi模块的控制与数据传输是一种常见的嵌入式系统应用。在这种应用中,STM32作为主控制器负责控制和与外部传感器交互,而ESP8266 WiFi模块则用于实现无线通信和数据传输。本文将介绍如何在STM32上控制ESP8266模块,建立WiFi…

3D 纹理的综合指南

在线工具推荐:3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 我们经常看到超现实主义的视频游戏和动画电影角色出现在屏幕上。他们皮肤上的…

【Redux】自己动手实现redux和react-redux

1. React提供context的作用 在class组件的世界里,如果后代组件共享某些状态,比如主题色、语言键,则需要将这些状态提升到根组件,以props的方式从根组件向后代组件一层一层传递,这样则需要在每层写props.someData&#…

Java Arrays.copyOfRange的用法

Arrays.copyOfRange的使用方法: 将一个数组拷贝至另一个数组中 参数: original:第一个参数为要拷贝的数组对象 from:第二个参数为拷贝的开始位置(包含) to:第三个参数为拷贝的结束位置&#x…

django websocket

目录 核心代码 consumers.py from channels.generic.websocket import WebsocketConsumer from channels.exceptions import StopConsumer import datetime import time from asgiref.sync import async_to_sync class ChatConsumer(WebsocketConsumer):def websocket_conne…

ssm基于vue框架和elementui组件的手机官网论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本手机官网就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息&#x…

Linux第3步_安装Ubuntu操作系统

创建好虚拟机后,就可以安装Ubuntu操作系统了。 1、双击“VMware Workstation Pro”,得到下面的界面。 2、点击“编辑虚拟机设置”,见下图: 3、等几秒钟,得到下面的界面: 4、点击“CD/DVD”,得到…

vscode无识别已有的maven java项目(visual studio code not recognizing java project)

文章目录 事情经过尝试疑惑问题解决结论 事情经过 未安装任何Java Extension Pack使用 Maven 的 archetype:generate 命令来创建一个新的项目使用vscode打开了该目录然后安装Java Extension Pack等java插件配置了vscode settings.json中的 java.configuration.runtimes和 java…

Python-1-字符串类型及方法

众所周知,Python面向对象,功能强大 | ू•ૅω•́)ᵎᵎᵎ

mybatis-flex与springBoot整合

mybatis-flex基本使用 1.测试sql2.导入坐标3.框架搭建1.pojo层2.mapper层3.service层4.controller层5.启动类6.配置类7.EmpMapper.xml 4.启动测试 本片文章在springBoot3,jdk21下测试通过 注意官方网站为:https://mybatis-flex.com/ 请点击:直…

使用STM32和ESP8266构建智能家居网络

本文将介绍如何使用STM32微控制器和ESP8266 WiFi模块构建一个智能家居网络。我们将讨论智能家居网络的整体设计思路、硬件连接和软件开发。通过本文的指导和示例代码,读者将能够搭建一个智能家居系统,实现远程控制和数据监测。 一、智能家居网络的整体设…

面试题:你如何理解 System.out.println()?

文章目录 前言首先分析System源码:out源码分析println分析 前言 如果你能自己读懂System.out.println(),就真正了解了Java面向对象编程的含义。 面向对象编程即创建了对象,所有的事情让对象帮亲力亲为(即对象调用方法&#xff09…

123基于matlab的差分优化算法优化极限学习机,DE-ELM

基于matlab的差分优化算法优化极限学习机,DE-ELM。输出分类识别结果和准确率。数据可更换自己的,程序已调通,可直接运行。 123差分优化算法极限学习机 (xiaohongshu.com)

深入了解 Vite:快速、简洁、高效的前端构建工具(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

包含自动轮播、点击切换、显示图片信息和页码方框显示码数的 HTML 和 JavaScript 示例:

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>轮播图</title><style>#carousel-conta…

FPGA高端项目:纯verilog的 10G-UDP 高速协议栈,提供7套工程源码和技术支持

目录 1、前言免责声明更新说明 2、相关方案推荐我这里已有的以太网方案本协议栈的千兆网UDP版本1G 千兆网 TCP-->服务器 方案1G 千兆网 TCP-->客户端 方案10G 万兆网 TCP-->服务器客户端 方案 3、该UDP协议栈性能4、详细设计方案设计架构框图网络调试助手GT资源使用GT…

java练习题之String方法运用

应用知识点&#xff1a;​​​​​​String类 1&#xff1a;(String 类)仔细阅读以下代码段&#xff1a; String s "hello"; String t"hello"; char[] c {h,e,l,l,o}; 2&#xff1a;下列选项输出结果为false 的语句是() System.out.println( s.euqals( t…

Leetcode2962. 统计最大元素出现至少 K 次的子数组

Every day a Leetcode 题目来源&#xff1a;2962. 统计最大元素出现至少 K 次的子数组 解法1&#xff1a;滑动窗口 算法如下&#xff1a; 设 mx max⁡(nums)。右端点 right 从左到右遍历 nums。遍历到元素 xnums[right] 时&#xff0c;如果 xmx&#xff0c;就把计数器 co…

Docker安装【学习Docker(十)】Docker SQLServer的安装与卸载、基本命令

文章目录 1. 安装SQL Server拉取镜像运行容器 2. 卸载SQL Server3. 开放端口4. 常用命令5. 使用Navicat Premium连接 1. 安装SQL Server 拉取镜像 sudo docker pull mcr.microsoft.com/mssql/server:2017-latest运行容器 创建挂载点目录 mkdir /home/sqlserver_data运行容器…