C# 以加密形式打开数据
时间: 2023-12-02 13:10:55 浏览: 209
C#数据加密
要以加密形式打开数据,可以使用C#中的加密库来加密和解密数据。以下是一个简单的示例:
```csharp
using System;
using System.IO;
using System.Security.Cryptography;
class Program
{
static void Main(string[] args)
{
// 要加密的数据
string data = "Hello, world!";
// 生成随机密钥和初始化向量
byte[] key = new byte[32];
byte[] iv = new byte[16];
using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
{
rng.GetBytes(key);
rng.GetBytes(iv);
}
// 加密数据
byte[] encryptedData = EncryptStringToBytes(data, key, iv);
// 保存加密后的数据到文件
File.WriteAllBytes("encrypted.dat", encryptedData);
// 读取加密后的数据
byte[] readData = File.ReadAllBytes("encrypted.dat");
// 解密数据
string decryptedData = DecryptStringFromBytes(readData, key, iv);
// 输出解密后的数据
Console.WriteLine(decryptedData);
}
static byte[] EncryptStringToBytes(string plainText, byte[] key, byte[] iv)
{
// 创建加密器
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
// 创建加密流
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, aes.CreateEncryptor(), CryptoStreamMode.Write))
{
// 加密数据
byte[] plainBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
cs.Write(plainBytes, 0, plainBytes.Length);
cs.FlushFinalBlock();
}
// 返回加密后的数据
return ms.ToArray();
}
}
}
static string DecryptStringFromBytes(byte[] cipherText, byte[] key, byte[] iv)
{
// 创建解密器
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
// 创建解密流
using (MemoryStream ms = new MemoryStream(cipherText))
{
using (CryptoStream cs = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Read))
{
// 解密数据
using (StreamReader reader = new StreamReader(cs))
{
return reader.ReadToEnd();
}
}
}
}
}
}
```
在上面的示例中,我们使用Aes加密算法和RNGCryptoServiceProvider随机生成密钥和初始化向量来加密和解密数据。加密后的数据保存在文件中,然后读取文件并解密数据。
阅读全文