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

C# 关于加密技术以及应用(二)

AES(Advanced Encryption Standard)和 RSA(Rivest-Shamir-Adleman)是两种不同的加密算法,它们各自有特定的使用场景和优势。下面是它们的主要区别和适用场景:

AES(高级加密标准)

特点

对称加密算法:加密和解密使用同一个密钥。
• 高效:加密和解密速度快,适合处理大量数据。
• 安全性高:目前没有已知的有效攻击方法。

适用场景

• 数据传输:适用于需要高速加密和解密的场景,如文件传输、网络通信等。
• 数据存储:适用于需要保护存储数据的场景,如数据库加密、文件加密等。
• 流媒体:适用于视频流、音频流等实时数据的加密。

示例

• 文件加密:使用 AES 对文件进行加密,确保文件在传输或存储过程中的安全性。
• 网络通信:使用 AES 对网络传输的数据进行加密,确保数据在传输过程中的机密性。

RSA(Rivest-Shamir-Adleman)

特点

非对称加密算法:加密和解密使用不同的密钥(公钥和私钥)。
• 安全性高:即使公钥公开,也无法推导出私钥。
• 计算复杂度高:加密和解密速度较慢,不适合处理大量数据。

适用场景

• 密钥交换:用于安全地交换对称加密算法的密钥。
• 数字签名:用于验证数据的完整性和来源。
• 身份认证:用于验证用户的身份,如 SSL/TLS 握手过程中的证书验证。

示例

• 密钥交换:在 SSL/TLS 协议中,客户端和服务器使用 RSA 算法交换 AES 密钥,确保后续通信的安全性。
• 数字签名:使用 RSA 算法对数据进行签名,确保数据的完整性和来源的可信性。
• 身份认证:在登录系统时,使用 RSA 算法对用户的凭据进行加密和验证。

结合使用

在实际应用中,AES 和 RSA 经常结合使用,以发挥各自的优点:

  1. 密钥交换:使用 RSA 算法安全地交换 AES 密钥。
  2. 数据加密:使用 AES 算法对大量数据进行高效加密和解密。

示例

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;public class CombinedEncryption
{public static void Main(){string original = "Hello, World!";// 生成 RSA 密钥对using (RSA rsa = RSA.Create()){string publicKey = rsa.ToXmlString(false);string privateKey = rsa.ToXmlString(true);// 生成 AES 密钥和 IVusing (Aes aes = Aes.Create()){aes.GenerateKey();aes.GenerateIV();byte[] aesKey = aes.Key;byte[] aesIV = aes.IV;// 使用 RSA 公钥加密 AES 密钥byte[] encryptedAesKey = rsa.Encrypt(aesKey, RSAEncryptionPadding.Pkcs1);// 使用 AES 加密数据byte[] encryptedData = EncryptStringToBytes_Aes(original, aesKey, aesIV);// 使用 RSA 私钥解密 AES 密钥byte[] decryptedAesKey = rsa.Decrypt(encryptedAesKey, RSAEncryptionPadding.Pkcs1);// 使用 AES 解密数据string decryptedData = DecryptStringFromBytes_Aes(encryptedData, decryptedAesKey, aesIV);Console.WriteLine("Original: {0}", original);Console.WriteLine("Encrypted Data: {0}", Convert.ToBase64String(encryptedData));Console.WriteLine("Decrypted: {0}", decryptedData);}}}//加密public static byte[] EncryptStringToBytes_Aes(string plainText, byte[] key, byte[] iv){using (Aes aesAlg = Aes.Create()){aesAlg.Key = key;aesAlg.IV = iv;ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);using (MemoryStream msEncrypt = new MemoryStream()){using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)){using (StreamWriter swEncrypt = new StreamWriter(csEncrypt)){swEncrypt.Write(plainText);}}return msEncrypt.ToArray();}}}//解密public static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] key, byte[] iv){using (Aes aesAlg = Aes.Create()){aesAlg.Key = key;aesAlg.IV = iv;ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);using (MemoryStream msDecrypt = new MemoryStream(cipherText)){using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)){using (StreamReader srDecrypt = new StreamReader(csDecrypt)){return srDecrypt.ReadToEnd();}}}}}
}

应用场景:

1. 网络通信安全

场景描述
在一个企业内部网络中,客户端和服务器之间需要进行安全的通信,确保数据在传输过程中的机密性和完整性。
使用技术
• RSA:用于安全地交换 AES 密钥。
• AES:用于加密和解密传输的数据。
详细说明

1.密钥交换:客户端生成一个随机的 AES 密钥,并使用服务器的公钥(RSA)加密该 AES 密钥,然后将加密后的密钥发送给服务器。
  • 密钥生成:一方(通常是服务器)生成一对公钥和私钥。
  • 密钥分发:服务器将公钥发送给另一方(通常是客户端)。
  • 密钥加密:客户端生成一个随机的对称密钥(如 AES 密钥),并使用服务器的公钥对这个对称密钥进行加密。
  • 密钥传输:客户端将加密后的对称密钥发送给服务器。
  • 密钥解密:服务器使用自己的私钥解密收到的对称密钥。
  • 数据加密:双方使用相同的对称密钥进行数据加密和解密。
2.数据传输:服务器使用自己的私钥(RSA)解密 AES 密钥,然后使用该 AES 密钥加密和解密与客户端之间的所有通信数据。
  • 文件加密:在将文件存储到磁盘或云端之前,使用 AES 算法对文件进行加密。
  • 数据传输:加密后的数据通过不安全的通道传输。
  • 文件解密:在读取文件时,使用 AES 算法对文件进行解密,恢复原始数据。

2. 文件存储加密

场景描述
企业需要将敏感数据(如客户信息、财务记录等)存储在本地或云端,确保数据在存储过程中的安全性。
使用技术
• AES:用于加密和解密存储的文件。
详细说明

  • 文件加密:在将文件存储到磁盘或云端之前,使用 AES 算法对文件进行加密。
  • 数据传输:加密后的数据通过不安全的通道传输。
  • 文件解密:在读取文件时,使用 AES 算法对文件进行解密,恢复原始数据。

3. 数字签名和验证

场景描述
企业需要确保发送的电子文档(如合同、报告等)的完整性和来源可信性。
使用技术
• RSA:用于生成和验证数字签名。
详细说明

  • 签名生成:使用发送方的私钥(RSA)对文档的哈希值进行签名,生成数字签名。
  • 签名验证:接收方使用发送方的公钥(RSA)验证数字签名,确保文档未被篡改且来自可信来源。

4. 用户身份认证

场景描述
在线服务需要验证用户的身份,确保只有合法用户才能访问系统资源。
使用技术
• RSA:用于生成和验证数字证书。
• AES:用于加密和解密用户凭据。
详细说明

  • 证书生成:用户注册时,系统生成一个数字证书,其中包含用户的公钥(RSA)和身份信息。
  • 证书验证:用户登录时,系统使用用户的公钥(RSA)验证其身份。
  • 凭据加密:用户凭据(如密码)在传输过程中使用 AES 算法进行加密,确保凭据的安全性。

5. 流媒体传输

场景描述
在线视频平台需要确保视频流在传输过程中的安全性,防止未经授权的访问和盗版。
使用技术
• AES:用于加密和解密视频流。
详细说明

  • 视频加密:在将视频流发送给客户端之前,使用 AES 算法对视频数据进行加密。
  • 视频解密:客户端接收到加密的视频流后,使用 AES 算法对视频数据进行解密,恢复原始视频内容。

6. 数据备份和恢复

场景描述
企业需要定期备份重要数据,并确保备份数据的安全性,以便在数据丢失或损坏时能够恢复。
使用技术
• AES:用于加密和解密备份数据。
详细说明

  • 数据备份:在将数据备份到磁盘或云端之前,使用 AES 算法对数据进行加密。
  • 数据恢复:在需要恢复数据时,使用 AES 算法对备份数据进行解密,恢复原始数据。

总结

• AES 适用于需要高效加密和解密大量数据的场景,如文件存储、流媒体传输、数据备份等。
• RSA 适用于需要安全地交换密钥、验证数据完整性和来源的场景,如网络通信安全、数字签名和验证、用户身份认证等。
• 结合使用:在实际应用中,通常使用 RSA 进行密钥交换,然后使用 AES 进行数据加密,以兼顾安全性和效率。

相关文章:

C# 关于加密技术以及应用(二)

AES(Advanced Encryption Standard)和 RSA(Rivest-Shamir-Adleman)是两种不同的加密算法,它们各自有特定的使用场景和优势。下面是它们的主要区别和适用场景: AES(高级加密标准) 特…...

视频中的某些片段如何制作GIF表情包?

动态表情包(GIF)已经成为我们日常沟通中不可或缺的一部分。GIF(Graphics Interchange Format),即图形交换格式,是一种支持多帧图像和透明度的位图文件格式。它最初由 CompuServe 公司在 1987 年推出&#x…...

图像识别 | Matlab基于卷积神经网络(CNN)的宝可梦识别源程序,GUI界面。附详细的运行说明。

图像识别 | Matlab基于卷积神经网络(CNN)的宝可梦识别源程序,GUI界面。附详细的运行说明。 目录 图像识别 | Matlab基于卷积神经网络(CNN)的宝可梦识别源程序,GUI界面。附详细的运行说明。预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基…...

String【Redis对象篇】

🏆 作者简介:席万里 ⚡ 个人网站:https://dahua.bloggo.chat/ ✍️ 一名后端开发小趴菜,同时略懂Vue与React前端技术,也了解一点微信小程序开发。 🍻 对计算机充满兴趣,愿意并且希望学习更多的技…...

top命令和系统负载

1 top中的字段说明 top是一个实时系统监视工具,可以动态展现出 CPU 使用率、内存使用情况、进程状态等信息,注意这些显示的文本不能直接使用 > 追加到文件中。 [rootvv~]# top -bn 1 | head top - 20:08:28 up 138 days, 10:29, 4 users, load av…...

ES6 混合 ES5学习记录

基础 数组 let arr [数据1,数据2,...数组n] 使用数组 数组名[索引] 数组长度 arr.length 操作数组 arr.push() 尾部添加一个,返回新长度 arr.unshift() 头部添加一个,返回新长度 arr.pop() 删除最后一个,并返回该元素的值 shift 删除第一个单元…...

HTTP 状态码大全

常见状态码 200 OK # 客户端请求成功 400 Bad Request # 客户端请求有语法错误 不能被服务器所理解 401 Unauthorized # 请求未经授权 这个状态代码必须和WWW- Authenticate 报头域一起使用 403 Forbidden # 服务器收到请求但是拒绝提供服务 404 Not Found # 请求资源不存…...

Redis学习(13)| Redisson 看门狗机制深度解析

文章目录 摘要1. 引言2. 看门狗的工作原理2.1 自动续期2.2 防止意外释放2.3 合理配置 3. 应用场景4. 最佳实践4.1 设置合理的lockWatchdogTimeout4.2 避免死锁4.3 监控和日志 5. 实现方式6. 使用示例7. 结论 摘要 Redisson 是一个用于 Redis 的 Java 客户端,它提供…...

【开源大屏】玩转开源积木BI,从0到1设计一个大屏

积木 BI 重磅推出免费大屏设计器!功能超强大,操作超流畅,体验超酷炫。快来体验一下吧。 让我们一起来看一下如何从0到1设计一个大屏。 一、积木BI大屏介绍 积木BI可视化数据大屏 是一站式数据可视化展示平台,旨在帮助用户快速通…...

基于PCRLB的CMIMO雷达资源调度方法(MATLAB实现)

集中式多输入多输出CMIMO雷达作为一种新体制雷达,能够实现对多个目标的同时多波束探测,在多目标跟踪领域得到了广泛运用。自从2006年学者Haykin提出认知雷达理论,雷达资源分配问题就成为一个有实际应用价值的热点研究内容。本文基于目标跟踪的…...

PAT--1035 插入与归并

题目描述 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。 归并排序进行如…...

Ubuntu20.04.6编译OpenWRT23.05.5错误

在Ubuntu20.04.6编译OpenWRT23.05.5时,会出现如下提示: fatal error: asm/types.h: No such file or directory 如果我们执行如下命令: sudo ln -s /usr/include/asm-generic /usr/include/asm 此时再次编译,会有如下提示&…...

一文说清flink从编码到部署上线

引言:目前flink的文章比较多,但一般都关注某一特定方面,很少有一个文章,从一个简单的例子入手,说清楚从编码、构建、部署全流程是怎么样的。所以编写本文,自己做个记录备查同时跟大家分享一下。本文以简单的mysql cdc为例展开说明。 环境说明:MySQL:5.7;flink:1.14.0…...

【5G】5G Physical Layer物理层(一)

5G多址接入和物理层与长期演进(LTE)存在一些差异。在下行方向,5G与LTE相似,依旧采用正交频分多址(OFDMA)。而在上行方向,5G采用了OFDMA和单载波频分多址(SC-FDMA)&#x…...

GauHuman阅读笔记【3D Human Modelling】

笔记目录 1. 基本信息2. 理解(个人初步理解,随时更改)3. 精读SummaryResearch Objective(s)Background / Problem StatementMethod(s)EvaluationConclusionReferences1. 基本信息 题目:GauHuman: Articulated Gaussian Splatting from Monocular Human Videos时间:2023.12…...

qemu安装arm64架构银河麒麟

qemu虚拟化软件,可以在一个平台上模拟另一个硬件平台,可以支持多种处理器架构。 一、安装 安装教程:https://blog.csdn.net/qq_36035382/article/details/125308044 下载链接:https://qemu.weilnetz.de/w64/2024/ 我下载的是 …...

在Elasticsearch (ES) 中,integer 和 integer_range的区别

在Elasticsearch (ES) 中,integer 和 integer_range 是两种不同的字段类型,它们用于存储和查询不同类型的数据。 Integer: integer 类型是用于存储32位整数值的简单数据类型。这个类型的字段适合用来表示单一的整数数值,例如用户的年龄、商品的数量等。支持标准的数值操作,…...

Playwright中Page类的方法

导航和页面操作 goto(url: str, **kwargs: Any): 导航到一个URL。 reload(**kwargs: Any): 重新加载当前页面。 go_back(**kwargs: Any): 导航到会话历史记录中的前一个页面。 go_forward(**kwargs: Any): 导航到会话历史记录中的下一个页面。 set_default_navigation_tim…...

硬链接方式重建mysql大表

硬链接方式重建mysql大表 操作步骤 选择数据库 select datadir; 进入数据文件目录 cd /data/mysql/mydata/testdb 创建硬连接 ln test_trans_msg_xx.ibd test_service_trans_msg_xx.ibd.bak ll test_trans_msg_xx* 进库删除表 DROP TABLE test_trans_msg_xx; 重建表 CREATE T…...

GPIO在ZYNQ7000中的结构和相关寄存器解析

GPIO MASK DATA LSW和 MASK DATA MSW LSW和MSW分别是LSW (Least Significant Word)和MSW (Most Significant Word)。 因为DATA是u32,所以如果寄存器的基址是XGPIOPS_DATA_LSW_OFFSET,那么32位就能同时让高16位的MASK DATA MSW]31:16和 MASK DATA LSW的bit7同时为…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

安卓基础(aar)

重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...