在C#中,可以使用多种方法对文件进行加密。这里,我将向您展示如何使用Aes
类(高级加密标准)和FileStream
类来实现文件加密和解密。
首先,确保已经安装了System.Security.Cryptography命名空间。
以下是一个简单的示例,展示了如何使用AES加密和解密文件:
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
class FileEncryption
{
static void Main()
{
string inputFile = "input.txt";
string outputFile = "output.enc";
string key = "your-secret-key"; // 请确保密钥长度为16、24或32个字符
string iv = "your-initial-vector"; // 请确保初始向量长度为16个字符
EncryptFile(inputFile, outputFile, key, iv);
DecryptFile(outputFile, "output.txt", key, iv);
}
static void EncryptFile(string inputFile, string outputFile, string key, string iv)
{
using (Aes aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = Encoding.UTF8.GetBytes(iv);
using (FileStream fs = new FileStream(inputFile, FileMode.Open))
{
using (FileStream fos = new FileStream(outputFile, FileMode.Create))
{
using (CryptoStream cs = new CryptoStream(fos, aes.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(fs.ToArray(), 0, fs.Length);
}
}
}
}
}
static void DecryptFile(string inputFile, string outputFile, string key, string iv)
{
using (Aes aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = Encoding.UTF8.GetBytes(iv);
using (FileStream fs = new FileStream(inputFile, FileMode.Open))
{
using (FileStream fos = new FileStream(outputFile, FileMode.Create))
{
using (CryptoStream cs = new CryptoStream(fs, aes.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(fs.ToArray(), 0, fs.Length);
}
}
}
}
}
}
在这个示例中,我们首先创建了一个名为FileEncryption
的类。在Main
方法中,我们指定了输入文件、加密后的输出文件、密钥和初始向量。然后,我们调用EncryptFile
方法对文件进行加密,接着调用DecryptFile
方法对加密后的文件进行解密。
请注意,您需要将your-secret-key
和your-initial-vector
替换为您自己的密钥和初始向量。密钥的长度应为16、24或32个字符,而初始向量的长度应为16个字符。在实际应用中,确保密钥和初始向量的安全性非常重要。