在.NET 中实现数据的加密存储可以使用System.Security.Cryptography
命名空间下的加密算法。以下是一个使用 AES(高级加密标准)算法进行数据加密存储到文件,并从文件读取解密数据的示例代码:
using System;
using System.IO;
using System.Security.Cryptography;
class Program
{
static void Main()
{
// 要加密存储的数据
string dataToEncrypt = "这是需要加密存储的敏感数据";
// 加密密钥,注意密钥的安全性和保密性
byte[] key = new byte[32];
byte[] iv = new byte[16];
// 使用RNGCryptoServiceProvider生成随机密钥和初始化向量
using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
{
rng.GetBytes(key);
rng.GetBytes(iv);
}
// 加密后的数据存储路径
string encryptedFilePath = "encryptedData.txt";
// 执行加密操作并存储到文件
EncryptAndSave(dataToEncrypt, key, iv, encryptedFilePath);
Console.WriteLine("数据已加密存储到文件。");
// 从文件读取并解密数据
string decryptedData = DecryptFromFile(encryptedFilePath, key, iv);
Console.WriteLine("解密后的数据: " + decryptedData);
}
static void EncryptAndSave(string data, byte[] key, byte[] iv, string filePath)
{
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))
{
// 创建StreamWriter用于写入数据到加密流
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
// 写入要加密的数据
swEncrypt.Write(data);
}
}
// 将内存流中的加密数据写入文件
byte[] encrypted = msEncrypt.ToArray();
File.WriteAllBytes(filePath, encrypted);
}
}
}
static string DecryptFromFile(string filePath, byte[] key, byte[] iv)
{
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = key;
aesAlg.IV = iv;
// 创建解密器
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
// 从文件读取加密数据
byte[] encryptedData = File.ReadAllBytes(filePath);
// 创建内存流用于读取加密数据
using (MemoryStream msDecrypt = new MemoryStream(encryptedData))
{
// 创建解密流,将解密器和内存流关联
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
// 创建StreamReader用于从解密流读取数据
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
// 读取解密后的数据
return srDecrypt.ReadToEnd();
}
}
}
}
}
}
【小结】
不积跬步无以至千里,不积小流无以成江海。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。