在C#中,可以使用Aes加密算法进行数据加密和解密。以下是一个简单的示例,展示了如何使用CryptoStream和byte[]进行加密和解密操作。
首先,需要安装一个名为"System.Security.Cryptography"的NuGet包。如果你还没有安装这个包,可以通过以下命令进行安装:
```csharp
Install-Package System.Security.Cryptography
```
接下来,我们创建一个名为"EncryptDecryptData"的类,并在其中定义两个方法:`Encrypt()`和`Decrypt()`。这两个方法都接受一个字符串参数,表示要加密或解密的数据。
```csharp
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public class EncryptDecryptData
{
private static readonly string _key = "0123456789abcdef"; // AES密钥,长度为16个字符
public static byte[] Encrypt(string data)
{
byte[] encryptedBytes = null;
using (var ms = new MemoryStream())
{
using (var cs = new CryptoStream(ms, AesManaged.Create(), CryptoStreamMode.Write))
{
cs.Write(Encoding.UTF8.GetBytes(data), 0, data.Length);
}
encryptedBytes = ms.ToArray();
}
return encryptedBytes;
}
public static string Decrypt(byte[] encryptedBytes)
{
string decryptedString = null;
using (var ms = new MemoryStream(encryptedBytes))
{
using (var cs = new CryptoStream(ms, AesManaged.Create(), CryptoStreamMode.Read))
{
using (var reader = new StreamReader(cs, Encoding.UTF8))
{
decryptedString = reader.ReadToEnd();
}
}
}
return decryptedString;
}
}
```
在这个示例中,我们使用了AesManaged类来创建和管理一个AES加密器。AesManaged类的构造函数需要一个密钥(在这种情况下是固定的16个字符),以及一个CryptoStream对象,用于写入加密数据。我们还使用了CryptoStream的Write方法将数据写入内存流,并使用MemoryStream的ToArray方法将其转换为字节数组。
在`Encrypt()`方法中,我们首先创建一个MemoryStream对象,然后使用CryptoStream的Write方法将数据写入MemoryStream。接着,我们将MemoryStream转换为字节数组。最后,我们返回这个字节数组。
在`Decrypt()`方法中,我们首先创建一个MemoryStream对象,用于存储加密数据。然后,我们使用CryptoStream的Read方法从MemoryStream中读取数据。最后,我们将读取到的数据转换为字符串并返回。
注意:在实际使用中,你应该使用更安全的方式来存储和管理密钥,例如通过环境变量或配置文件。此外,你还应该确保你的加密和解密算法是安全的,并且不会被恶意用户利用。