加密算法和身份认证

news2024/11/29 2:27:53

前瞻概念

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

  • 明文:加密前的消息叫 “明文” (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.coloradmin.cn/o/1356618.html

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

相关文章

【三维分割】SAGA:Segment Any 3D Gaussians

系列文章目录 代码:https://jumpat.github.io/SAGA. 论文:https://jumpat.github.io/SAGA/SAGA_paper.pdf 来源:上海交大和华为研究院 文章目录 系列文章目录摘要一、前言二、相关工作1.基于提示的二维分割2.将2D视觉基础模型提升到3D3.辐射…

【网络安全】【密码学】常见数据加(解)密算法及Python实现(一)

一、Base64编码 1、算法简介 Base64是一种常见的编(解)码方法,用于传输少量二进制数据。该编码方式较为简短,并不具有可读性,对敏感数据可以起到较好的保护作用。 2、Python实现(调库) &…

LRU的设计与实现(算法村第五关黄金挑战)

146. LRU 缓存 - 力扣(LeetCode) 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存…

SSL/TLS 握手过程详解

SSL握手过程详解 1、SSL/TLS 历史发展2、SSL/TLS握手过程概览2.1、协商交换密码套件和参数2.2、验证一方或双方的身份2.3、创建/交换对称会话密钥 3、TLS 1.2 握手过程详解4、TLS 1.3 握手过程详解5、The TLS 1.2 handshake – Diffie-Hellman Edition 1、SSL/TLS 历史发展 可…

显示所有中国城市需要多少个汉字?

显示所有中国城市需要多少个汉字呢? 需要3678个汉字,看看我怎么知道的。 第一步:先找到中国的所有城市的名称 去哪里找到中国的所有城市的名称呢? 进入中国天气网:http://www.weather.com.cn/ 使用 F12 打开浏览器的调…

[Mac软件]Boxy SVG 4.20.0 矢量图形编辑器

Boxy SVG 是一款入门级矢量图形编辑器,具有全套基本功能、易于学习的选项卡式界面和可自定义的键盘快捷键。有了它,您可以轻松创建横幅、图标、按钮、图形、界面草图,甚至有趣的表情包。 编辑器支持使用多种工具创建和编辑矢量对象&#xff…

深入探讨关于Redis的底层

1.1为什么Redis存储比关系型数据库快: 数据存储在内存中(比如企业项目中用户表中有一个亿的用户,如果再来注册一个用户,或者登录,必须先判断是否有这个数据,这个时候如果直接查询数据库的话,对服…

Java+springboot+vue智慧校园源码,数据云平台Web端+小程序教师端+小程序家长端

技术架构: Javaspringbootvue element-ui小程序电子班牌:Java Android演示自主版权。 智慧校园电子班牌人脸识别系统全套源码,包含:数据云平台Web端小程序教师端小程序家长端电子班牌 学生端。 电子班牌系统又称之为智慧班牌&am…

分布式之任务调度学习一

1 任务调度 1.1 什么时候需要任务调度? 1.1.1 任务调度的背景 在业务系统中有很多这样的场景: 1、账单日或者还款日上午 10 点,给每个信用卡客户发送账单通知,还款通知。如何判断客户的账单日、还款日,完成通知的发…

类加载机制之双亲委派模型、作用、源码、SPI打破双亲委派模型

双亲委派模型 双亲委派工作机制双亲委派的作用双亲委派的实现源码SPI打破双亲委派 应用程序是由三种类加载器相互配合,从而实现类加载,除此之外还可以加入自己定义的类的加载器。 类加载器之间的层次关系,称为双亲委派模型(Parent…

飞腾Ubantu22.04.3安装OpenNebula测试

目前只有one服务能够启动成功,sunstone-server nodejs 构建存在问题。 1.概述 因OpenneBula官方镜像源只有AMD架构的镜像包不存在ARM的镜像包,借此用源码编译进行测试。 2.官网github地址 下载解压存放在服务器上: https://github.com/O…

轻量检测模型PP-PicoDet解析

Paper:PP-PicoDet: A Better Real-Time Object Detector on Mobile Devices official implementation:https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.7/configs/picodet Backbone 作者通过实验发现,ShuffleNetV2在移动…

2024第一篇: 架构师成神之路总结,你值得拥有

大家好,我是冰河~~ 很多小伙伴问我进大厂到底需要怎样的技术能力,经过几天的思考和总结,终于梳理出一份相对比较完整的技能清单,小伙伴们可以对照清单提前准备相关的技能,在平时的工作中注意积累和总结。 只要在平时…

Apache Commons BCEL与Java字节码操作

第1章:Apache Commons BCEL简介 大家好,我是小黑,咱们今天来聊聊Apache Commons BCEL(Byte Code Engineering Library)。你可能会问,BCEL是什么鬼?别急,小黑这就给你娓娓道来。BCEL…

Hadoop入门学习笔记——八、数据分析综合案例

视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记(汇总) 目录 八、数据分析综合案例8.1. 需求分析8.1.1. 背景介绍8.1.2…

基于Python实现二手房整体情况可视化分析+房价预测【500010099】

项目描述 通过房天下兰州二手房信息,对数据进行进一步清洗处理,分析各维度的数据,筛选对房价有显著影响的特征变量,探索兰州二手房整体情况、价格情况和价格的影响因素,建立房价预测模型。 提出问题 探究单价、数量…

SVN服务端的下载、安装

地址 : Apache Subversion Binary Packages 下载 点击 VisualSVN 安装 都是点击 next 点击next ,即可安装成功

代码随想录算法训练营第五十七天|647. 回文子串、516.最长回文子序列、动态规划总结篇

代码随想录 (programmercarl.com) 647. 回文子串 1.dp数组及下标含义 我们在判断字符串S是否是回文,那么如果我们知道 s[1],s[2],s[3] 这个子串是回文的,那么只需要比较 s[0]和s[4]这两个元素是否相同,如果相同的话&…

矩阵式键盘按键音

#include<reg51.h> //包含51单片机寄存器定义的头文件 sbit soundP3^7; //将sound位定义为P3.7 /************************************************************** 函数功能&#xff1a;蜂鸣器发声延时约120ms *************************************************…

Linux 内核调试

文章目录 一、方法论 一、方法论 qemu 虚拟机 Linux内核学习 Linux 内核调试 一&#xff1a;概述 Linux 内核调试 二&#xff1a;ubuntu20.04安装qemu Linux 内核调试 三&#xff1a;《QEMU ARM guest support》翻译 Linux 内核调试 四&#xff1a;qemu-system-arm功能选项整…