在C#中,可以使用System.IO.Directory
類來遍歷文件夾,并使用System.IO.File
類來讀取和寫入文件。為了加密文件夾,可以選擇使用對(duì)稱加密算法(如AES)或非對(duì)稱加密算法(如RSA)。
以下是一個(gè)使用AES加密文件夾的示例代碼:
System.Security.Cryptography
命名空間中的類來實(shí)現(xiàn)這一點(diǎn)。using System.Security.Cryptography;
using System.IO;
// 生成密鑰和IV
byte[] key = new byte[32]; // AES密鑰長(zhǎng)度為32字節(jié)
byte[] iv = new byte[16]; // AES IV長(zhǎng)度為16字節(jié)
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
// 保存密鑰和IV到文件中
using (FileStream fs = new FileStream("key.bin", FileMode.Create))
{
aes.SaveKey(fs);
}
using (FileStream fs = new FileStream("iv.bin", FileMode.Create))
{
fs.Write(iv, 0, iv.Length);
}
}
using System.IO;
// 加密文件夾中的文件
void EncryptFilesInFolder(string folderPath)
{
DirectoryInfo di = new DirectoryInfo(folderPath);
FileInfo[] fis = di.GetFiles();
foreach (FileInfo fi in fis)
{
string filePath = fi.FullName;
string encryptedFilePath = Path.Combine(folderPath, "encrypted_" + fi.Name);
// 加密文件
EncryptFile(filePath, encryptedFilePath);
}
DirectoryInfo[] dis = di.GetDirectories();
foreach (DirectoryInfo di in dis)
{
string folderPath = di.FullName;
string encryptedFolderPath = Path.Combine(folderPath, "encrypted_" + di.Name);
// 遞歸加密子文件夾
EncryptFilesInFolder(folderPath);
}
}
// 加密單個(gè)文件
void EncryptFile(string inputFilePath, string outputFilePath)
{
using (Aes aes = Aes.Create())
{
aes.Key = File.ReadAllBytes("key.bin");
aes.IV = File.ReadAllBytes("iv.bin");
using (ICryptoTransform encryptor = aes.CreateEncryptor())
{
using (FileStream fs = new FileStream(inputFilePath, FileMode.Open))
{
using (CryptoStream cs = new CryptoStream(fs, encryptor, CryptoStreamMode.Read))
{
using (FileStream fsOut = new FileStream(outputFilePath, FileMode.Create))
{
cs.CopyTo(fsOut);
}
}
}
}
}
}
EncryptFilesInFolder
方法來加密整個(gè)文件夾。string folderPath = @"C:\path\to\folder";
EncryptFilesInFolder(folderPath);
請(qǐng)注意,這只是一個(gè)簡(jiǎn)單的示例,實(shí)際應(yīng)用中可能需要考慮更多的因素,如錯(cuò)誤處理、異常處理、密鑰和IV的管理等。此外,加密后的文件將無法直接讀取,需要使用相應(yīng)的解密算法進(jìn)行解密。