.NET 6 工具类 AES DES AES(高级加密标准)和 DES(数据加密标准)是常用的对称加密算法,用于保护数据的机密性。在 .NET 6 中,我们可以使用内置的工具类来实现 AES 和 DES 加密。 本文将
.NET 6 工具类 AES DES
AES(高级加密标准)和 DES(数据加密标准)是常用的对称加密算法,用于保护数据的机密性。在 .NET 6 中,我们可以使用内置的工具类来实现 AES 和 DES 加密。
本文将介绍如何使用 .NET 6 工具类来进行 AES 和 DES 加密,并提供代码示例。
AES 加密
AES 是一种对称加密算法,支持不同的密钥长度(128、192 和 256 位)。在 .NET 6 中,我们可以使用 Aes
类来进行 AES 加密。
首先,我们需要创建一个 Aes
实例,并设置加密算法的一些属性,如密钥长度和填充模式。以下是一个示例代码:
using System;
using System.Security.Cryptography;
namespace AESDemo
{
class Program
{
static void Main(string[] args)
{
using var aes = Aes.Create();
aes.KeySize = 256;
aes.Padding = PaddingMode.PKCS7;
// 加密数据
byte[] plainText = System.Text.Encoding.UTF8.GetBytes("Hello, AES!");
byte[] encryptedData = EncryptData(plainText, aes.Key, aes.IV);
// 解密数据
byte[] decryptedData = DecryptData(encryptedData, aes.Key, aes.IV);
string decryptedText = System.Text.Encoding.UTF8.GetString(decryptedData);
Console.WriteLine(decryptedText);
}
static byte[] EncryptData(byte[] data, byte[] key, byte[] iv)
{
using var encryptor = Aes.Create().CreateEncryptor(key, iv);
return PerformCryptography(data, encryptor);
}
static byte[] DecryptData(byte[] data, byte[] key, byte[] iv)
{
using var decryptor = Aes.Create().CreateDecryptor(key, iv);
return PerformCryptography(data, decryptor);
}
static byte[] PerformCryptography(byte[] data, ICryptoTransform transform)
{
using var stream = new System.IO.MemoryStream();
using var cryptoStream = new CryptoStream(stream, transform, CryptoStreamMode.Write);
cryptoStream.Write(data, 0, data.Length);
cryptoStream.FlushFinalBlock();
return stream.ToArray();
}
}
}
上述代码中,我们首先创建了一个 Aes
实例,并设置了密钥长度为 256 位,填充模式为 PKCS7。然后,我们使用 EncryptData
方法对明文进行加密,使用 DecryptData
方法对密文进行解密。最后,我们将解密后的数据转换为字符串并输出。
DES 加密
DES 是一种较早的对称加密算法,支持 64 位密钥。在 .NET 6 中,我们可以使用 DESCryptoServiceProvider
类来进行 DES 加密。
以下是一个使用 DES 加密和解密的示例代码:
using System;
using System.Security.Cryptography;
namespace DESDemo
{
class Program
{
static void Main(string[] args)
{
using var des = new DESCryptoServiceProvider();
des.GenerateKey();
des.GenerateIV();
// 加密数据
byte[] plainText = System.Text.Encoding.UTF8.GetBytes("Hello, DES!");
byte[] encryptedData = EncryptData(plainText, des.Key, des.IV);
// 解密数据
byte[] decryptedData = DecryptData(encryptedData, des.Key, des.IV);
string decryptedText = System.Text.Encoding.UTF8.GetString(decryptedData);
Console.WriteLine(decryptedText);
}
static byte[] EncryptData(byte[] data, byte[] key, byte[] iv)
{
using var encryptor = des.CreateEncryptor(key, iv);
return PerformCryptography(data, encryptor);
}
static byte[] DecryptData(byte[] data, byte[] key, byte[] iv)
{
using var decryptor = des.CreateDecryptor(key, iv);
return PerformCryptography(data, decryptor);
}
static byte[] PerformCryptography(byte[] data, ICryptoTransform transform)
{
using var stream = new System.IO.MemoryStream();
using var cryptoStream = new CryptoStream(stream, transform, CryptoStreamMode.Write);
cryptoStream.Write(data, 0, data.Length);
cryptoStream.FlushFinalBlock();
return stream.ToArray();
}
}
}
上述代码中,我们首先创建了一个 DESCryptoServiceProvider
实例,并生成了随机的密钥和向量。然后,我们使用 EncryptData
方法对明文进行加密,使用 DecryptData
方法对密文进行解密。最后,我们将解密后的数据转换为字符串并输出。
总结
本文介绍了如何使用 .