在C#中,文件加密和解密可以通过多种方式实现,但一种常见且有效的方法是使用AES(高级加密标准)算法。下面是一个简单的示例,展示了如何使用AES来加密和解密文件。
首先,你需要引入必要的命名空间:
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
然后,你可以创建两个方法:一个用于加密文件,另一个用于解密文件。这里我假设你有一个密钥(Key)和初始化向量(IV),它们用于加密和解密过程。
### 加密文件
public static void EncryptFile(string inputFile, string outputFile, byte[] Key, byte[] IV)
{
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = Key;
aesAlg.IV = IV;
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using (FileStream fsCrypt = new FileStream(outputFile, FileMode.Create))
{
using (CryptoStream csEncrypt = new CryptoStream(fsCrypt, encryptor, CryptoStreamMode.Write))
{
using (FileStream fsIn = new FileStream(inputFile, FileMode.Open))
{
int data;
while ((data = fsIn.ReadByte()) != -1)
{
csEncrypt.WriteByte((byte)data);
}
}
}
}
}
}
### 解密文件
public static void DecryptFile(string inputFile, string outputFile, byte[] Key, byte[] IV)
{
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = Key;
aesAlg.IV = IV;
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
using (FileStream fsCrypt = new FileStream(inputFile, FileMode.Open))
{
using (CryptoStream csDecrypt = new CryptoStream(fsCrypt, decryptor, CryptoStreamMode.Read))
{
using (FileStream fsOut = new FileStream(outputFile, FileMode.Create))
{
int data;
while ((data = csDecrypt.ReadByte()) != -1)
{
fsOut.WriteByte((byte)data);
}
}
}
}
}
}
请注意,为了运行这些代码,你需要有合适的`Key`和`IV`。这些通常应该是随机生成的,并且需要安全地存储起来以便在解密时使用。
**重要提示**:在实际应用中,你应该使用安全的方式来生成和存储密钥(Key)和初始化向量(IV),而不是硬编码在代码中,因为这样做会大大降低加密的安全性。
此外,上述代码示例仅用于演示目的,并未包含错误处理或优化性能的代码。在生产环境中,你应该添加适当的错误处理逻辑,并根据需要优化代码性能。