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

C# | 上位机开发新手指南(七)加密算法

上位机开发新手指南(七)加密算法

文章目录

  • 上位机开发新手指南(七)加密算法
    • 前言
    • 加密算法的分类
      • 对称加密算法和非对称加密算法
      • 流加密算法和块加密算法
      • 分组密码和序列密码
      • 哈希函数和消息认证码
    • 对称加密与非对称
      • 对称加密
        • 优点
        • 缺点
        • 对称加密算法使用流程
      • 非对称加密
        • 优点
        • 缺点
        • 非对称加密的使用流程
    • 感谢阅读

前言

加密算法是信息安全领域中的重要技术之一,可以保护数据在传输、存储和处理过程中的安全性。
学习加密算法可以帮助我们更好地理解和应用其他相关技术。例如,数字证书、数字签名、安全协议等都与加密算法密切相关,掌握加密算法可以为我们理解和应用这些技术提供帮助。

加密算法的分类

根据不同的维度,加密算法可以分为以下几种类型。

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

对称加密算法使用相同的密钥进行加密和解密,而非对称加密算法使用公钥和私钥进行加密和解密。

  • 对称加密算法:DES、3DES、AES等。
  • 非对称加密算法:RSA、DSA、ECC等。

流加密算法和块加密算法

流加密算法将输入数据分成一系列连续的流,并对每个流进行加密。块加密算法将输入数据划分为块,并对每个块进行加密。

  • 流加密算法:RC4、Salsa20、ChaCha20等。
  • 块加密算法:AES、Blowfish、Twofish等。

分组密码和序列密码

分组密码是一种块加密算法,将输入数据划分为固定大小的块,并对每个块进行加密。序列密码是一种流加密算法,将输入数据作为一个连续的比特流,并对每个比特进行加密。

  • 分组密码:AES、Blowfish、DES等。
  • 序列密码:RC4、Salsa20、ChaCha20等。

是不是感觉“流加密算法和块加密算法”与“分组密码和序列密码”很相似?
块加密算法和分组密码算法之间有一定的关系,流加密算法和序列密码算法之间也有一定的关系。但是,它们并不是完全等同的概念,因为它们的划分基于不同的加密方式和处理数据的方法。

哈希函数和消息认证码

哈希函数将任意长度的输入数据映射到固定长度的输出数据,常用于数字签名和身份验证。消息认证码使用密钥对输入数据进行加密,并生成固定长度的输出数据,常用于数据完整性验证和消息认证。

  • 哈希函数:SHA-1、SHA-2、SHA-3等。
  • 消息认证码:HMAC、CMAC、Poly1305等。

哈希函数和消息认证码本质上是摘要算法,但由于它们广泛应用于加密领域,所以在本章中再次提及。 关于摘要算法更多信息,请参考上一篇文章《上位机开发新手指南(六)摘要算法》。

对称加密与非对称

在几种分类中,对称加密与非对称加密是值得重点讨论的,因为它们是加密算法中最常用的两种类型,且在实际应用中起着重要的作用,但它们的原理和用途有所不同。

对称加密使用相同的密钥对数据进行加密和解密。这意味着只有持有相同密钥的人才能解密数据。

非对称加密使用公钥和私钥对数据进行加密和解密。公钥可以公开分发,而私钥则只有持有者可以访问。发送方使用接收方的公钥加密数据,只有接收方可以使用其私钥解密数据。

对称加密

对称加密使用相同的密钥对数据进行加密和解密。它有以下优点和缺点:

优点

加密和解密速度快:对称加密算法的加密和解密过程非常快速,适用于处理大量数据的场景。

适合加密大文件:对称加密算法可以加密大文件,因为加密和解密速度快。

算法简单:对称加密算法的实现相对简单,不需要大量的计算资源。

缺点

密钥管理困难:对称加密算法需要在发送方和接收方之间安全地共享密钥,如果密钥被泄露,数据就会受到威胁。

安全性较低:对称加密算法的安全性较低,因为加密和解密使用相同的密钥。如果密钥泄露,数据就无法保护。

不适合分布式环境:对称加密算法不适合在分布式环境中使用,因为要求发送方和接收方共享密钥,而分布式环境中的接收方可能会不断变化。

对称加密算法适用于需要快速加密和解密的场景,但密钥管理和安全性是需要考虑的问题。

对称加密算法使用流程

  1. 密钥生成:加密方选择一个密钥,并将该密钥保密地传输给解密方。

  2. 明文加密:加密方使用对称加密算法和密钥对明文进行加密,生成密文。

  3. 密文传输:加密方将密文传输给解密方。

  4. 密文解密:解密方使用相同的对称加密算法和密钥对密文进行解密,还原出明文。

非对称加密

相比对称加密,非对称加密具有以下的优缺点:

优点

非对称加密的公钥可以公开分发,而私钥只有持有者可以访问。因此,非对称加密不需要在发送方和接收方之间共享密钥,这使得密钥管理更容易。

非对称加密的安全性更高,因为加密和解密使用不同的密钥,攻击者即使获得了公钥,也无法通过公钥来破解加密数据。

缺点

非对称加密算法的缺点是加密和解密速度慢,不适合加密大文件。此外,验证身份需要一定的复杂性,虽然可以用于数字签名,但需要一定的技术知识来实现。

非对称加密算法具有更高的安全性和更容易的密钥管理,但需要权衡加密和解密速度、适用场景和技术成本等因素来确定是否使用这种加密方式。

非对称加密的使用流程

流程如下:

  1. 首先,接收方生成一对公钥和私钥。公钥可以公开分发,而私钥只能由接收方持有

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

  3. 接收方使用自己的私钥对加密数据进行解密,从而获得原始数据。

  4. 如果需要签名验证,则接收方使用自己的私钥对数据进行签名,发送给发送方。

  5. 发送方接收到签名后,使用接收方的公钥对签名进行验证,从而确认数据的来源和完整性。

感谢阅读

如果这篇文章对您有所帮助,请点赞文章、关注我、订阅专栏以获取更多相关内容。
同时,如果您有任何问题或建议,请在评论区留言,我会尽快回复。

相关文章:

C# | 上位机开发新手指南(七)加密算法

上位机开发新手指南(七)加密算法 文章目录上位机开发新手指南(七)加密算法前言加密算法的分类对称加密算法和非对称加密算法流加密算法和块加密算法分组密码和序列密码哈希函数和消息认证码对称加密与非对称对称加密优点缺点对称加…...

实验一 跨VLAN访问

目录 一、按照拓扑图配置VLAN,并实现跨VLAN间的访问。 二、实验环境 三、实验步骤 一、按照拓扑图配置VLAN,并实现跨VLAN间的访问。 1、配置好交换机的VLAN和各个终端的地址,实现各个VLAN内能连通。 2、开启两个交换机的VTY连接&#xff0…...

通信算法之130:软件无线电-接收机架构

1. 超外差式接收机 2.零中频接收机 3.数字中频接收机...

C++编程大师之路:从入门到精通-C++基础入门

文章目录前言主要内容C基础入门初识C第一个C程序注释变量常量关键字标识符命名规则数据类型整型sizeof关键字实型(浮点型)字符型转义字符字符串型布尔类型 bool数据的输入运算符算术运算符赋值运算符比较运算符逻辑运算符程序流程结构选择结构if语句三目…...

如何在千万级数据中查询 10W 的数据并排序

前言 在开发中遇到一个业务诉求,需要在千万量级的底池数据中筛选出不超过 10W 的数据,并根据配置的权重规则进行排序、打散(如同一个类目下的商品数据不能连续出现 3 次)。 下面对该业务诉求的实现,设计思路和方案优…...

RocketMQ消息文件过期原理

文章目录 消费完后的消息去哪里了?什么时候清理物理消息文件?这样设计带来的好处跳过历史消息的处理所有的消费均是客户端发起Pull请求的,告诉消息的offset位置,broker去查询并返回。但是有一点需要非常明确的是,消息消费后,消息其实并没有物理地被清除,这是一个非常特殊…...

Docker容器理解

目录 目录 一:简单理解操作系统 操作系统: 内核: 内核空间和用户空间: 二:简单理解文件系统 1:什么是文件系统 2:什么是root文件系统 三:docker 1:docker镜像 2&…...

SpringBoot 整合knife4j

文章目录SpringBoot 整合knife4j引入knife4j注解案例knife4j增强功能接口添加作者资源屏蔽访问页面加权控制接口排序分组排序请求参数缓存过滤请求参数禁用调试禁用搜索框SpringBoot 整合knife4j Knife4j是一款基于Swagger 2的在线API文档框架 在Spring Boot中,使…...

73-归并排序练习-LeetCode148排序链表

题目 给你链表的头结点 head ,请将其按升序排列并返回排序后的链表 。 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4] 示例 2: 输入:head [-1,5,3,4,0] 输出:[-1,0,3,4,5] 示例 3&#xff…...

Hystrix学习笔记

Hystrix 官方文档: https://github.com/Netflix/Hystrix/wiki 是什么 In a distributed environment, inevitably some of the many service dependencies will fail. Hystrix is a library that helps you control the interactions between these distributed …...

面向对象编程(基础)8:关键字:package、import

目录 8.1 package(包) 8.1.1 语法格式 说明: 8.1.2 包的作用 8.1.3 应用举例 举例2:MVC设计模式 8.1.4 JDK中主要的包介绍 8.2 import(导入) 8.2.1 语法格式 8.2.2 应用举例 8.2.3 注意事项 8.1 package(包) package,称为包&#x…...

【机器学习】P10 从头到尾实现一个线性回归案例

这里写自定义目录标题(1)导入数据(2)画出城市人口与利润图(3)计算损失值(4)计算梯度下降(5)开始训练(6)画出训练好的模型(…...

【Java EE】-多线程编程(四) 死锁

作者:学Java的冬瓜 博客主页:☀冬瓜的主页🌙 专栏:【JavaEE】 分享:2023.3.31号骑行的照片再发一次(狗头)。 主要内容:什么是死锁?不可重入可重入、死锁的三个典型情况:1、一个线程一…...

学习数据结构第1天(数据结构的基本概念)

数据结构的基本概念基本概念和术语数据结构的三要素经典试题基本概念和术语 1.数据 数据是信息的载体,是描述客观事物属性的数、字符以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。 2.数据元素 数据元素是数据的基本…...

南大通用数据库-Gbase-8a-学习-33-空洞率查询与解决方法

目录 一、个人理解 二、存储过程 三、虚机测试 四、解决方法 1、重建表 2、shrink space 一、个人理解 空洞率的产生是由于delete语句并不会真实的删除数据,只是在数据上打了一个不可见标签,但实际还是占用着相应的存储空间。 二、存储过程 自定义…...

为什么我们认为GPT是一个技术爆炸

从23年初,ChatGPT火遍全球,通过其高拟人化的回答模式,大幅提升了人机对话的体验和效率,让用户拥有了一个拥有海量知识的虚拟助手,根据UBS发布的研究报告显示,ChatGPT在1月份的月活跃用户数已达1亿&#xff…...

程序员如何能提高自己的编程水平?

这些实用的小建议,能帮你迅速地提高编程水平: 不要做无意义的奋斗 拒绝喊口号和无意义的奋斗,包括但不限于: ①做了计划表却从未有执行的一天; ②每天都是最早来、最晚走,但是工作进度趋近于0&#xff1b…...

从零使用vuepress搭建个人博客部署.github.io

前言 记录小白如何搭建个人博客 github部署的博客👉: DreamLuffe的博客 netilify部署的博客:👉:DreamLuffe的博客 个人博客搭建实战 网上有很多优秀的开源博客页面,我们就直接安装好,再继续…...

Python 进阶指南(编程轻松进阶):十一、注释、文档字符串和类型提示

原文:http://inventwithpython.com/beyond/chapter11.html 源代码中的注释和文档可能和代码一样重要。原因是软件是永远不会完成的;无论是添加新功能还是修复错误,您总是需要做出改变。但是你不能改变代码,除非你理解它&#xff0…...

python item()方法

Python中有很多方法来解决一些简单的问题,其中最常见的就是用 item ()方法来完成。item ()方法的全称是item-process (),该方法用来对对象进行创建、删除、改变、添加、更新等操作。…...

【day2】Android Jetpack Compose环境搭建

【day2】Android Jetpack Compose环境搭建 以下是适用于 Jetpack Compose 的环境要求: Android Studio 版本:4.2 Canary 15 或更高版本Gradle 版本:7.0.0-beta02 或更高版本Android 插件版本:4.2.0-beta15 或更高版本Kotlin 版本…...

stable-diffusion安装和简单测试

参考: https://github.com/CompVis/stable-diffusion 理解DALLE 2, Stable Diffusion和 Midjourney的工作原理 Latent Diffusion Models论文解读 【生成式AI】淺談圖像生成模型 Diffusion Model 原理 【生成式AI】Stable Diffusion、DALL-E、Imagen 背後…...

MATLAB算法实战应用案例精讲-【智能优化算法】 基于帕累托包络的选择算法II(PESA-II)(附MATLAB代码实现)

目录 前言 知识储备 数据包络分析(DEA) 特点 名词解释 类型介绍 案例简介 软件操作(SPSSPRO)...

【华为机试真题详解JAVA实现】—坐标移动

目录 一、题目描述 二、解题代码 一、题目描述 开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。 输入: 合法坐标为A(或者D或者W或者S) +…...

【软考五】数据库(做题)

该文章不适合学习数据库,适合考证,遇到实际问题的,不要在这儿浪费时间。切记切记 软考之数据库一、概念数据模型(下午题常考)二、结构数据模型关系模型1、关系模型中基本术语2、关系模型中的关系完整性约束3、关系代数…...

【Java Web】012 -- SpringBootWeb综合案例(登录功能、登录校验、异常处理)

目录 一、登录功能 1、基础登录功能 ①、SQL语句 ②、接口参数 ③、实现思路 ④、实现步骤 2、联调Bug(没有Cookie或Session) 二、登录校验 1、登录校验的实现思路 2、会话技术 ①、会话与会话跟踪 ②、会话跟踪方案对比 Cookie Session …...

跨界智能手表:比亚迪向左,小鹏向右

如今,电动化、智能化是汽车行业转型的大方向,而由于目前国内汽车产业在电动化方面已经算是“小有成效”,因此,抢占智能化高地,打造一个多设备互融的生态系统,就成为了车企的共同愿景。在此背景下&#xff0…...

【c++初阶】第九篇:vector(常用接口的使用 + 模拟实现)

文章目录vector介绍vector的使用vector的定义vector iterator(迭代器) 的使用begin和endrbegin和rendvector 空间增长问题size和capacityreserve和resize(重点)测试vector的默认扩容机制emptyvector的增删查改push_back和pop_backinsert和erasefindswapo…...

Taro React组件使用(6) —— RuiSendCode 短信验证码【倒计时】

1. 需求分析 获取验证码按钮,点击后进入倒计时环节;默认采用 120s 后才允许再次发送短信验证码;发送后不能再次点击发送按钮,点击也不执行发送逻辑;最好将发送短信的业务逻辑请求接口写在组件中,封装为公用组件,可以多处使用。2. 实现效果 2.1 验证码发送前 2.2 验证码…...

把ChatGPT接入我的个人网站

效果图 详细内容和使用说明可以查看我的个人网站文章 把ChatGPT接入我的个人网站 献给有外网服务器的小伙伴 如果你本人已经有一台外网的服务器,并且页拥有一个OpenAI API Key,那么下面就可以参照我的教程来搭建一个自己的ChatGPT。 需要的环境 Cento…...