c#怎么加密文件夹

avatar
作者
猴君
阅读量:0

在C#中,可以使用System.IO.Directory类来遍历文件夹,并使用System.IO.File类来读取和写入文件。为了加密文件夹,可以选择使用对称加密算法(如AES)或非对称加密算法(如RSA)。

以下是一个使用AES加密文件夹的示例代码:

  1. 首先,需要生成一个密钥和一个初始化向量(IV),并将它们保存到文件中。可以使用System.Security.Cryptography命名空间中的类来实现这一点。
using System.Security.Cryptography; using System.IO;  // 生成密钥和IV byte[] key = new byte[32]; // AES密钥长度为32字节 byte[] iv = new byte[16]; // AES IV长度为16字节 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);     } } 
  1. 接下来,需要遍历文件夹中的所有文件,并将它们加密。可以使用递归方法来实现这一点。
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);     } }  // 加密单个文件 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);                     }                 }             }         }     } } 
  1. 最后,可以调用EncryptFilesInFolder方法来加密整个文件夹。
string folderPath = @"C:\path\to\folder"; EncryptFilesInFolder(folderPath); 

请注意,这只是一个简单的示例,实际应用中可能需要考虑更多的因素,如错误处理、异常处理、密钥和IV的管理等。此外,加密后的文件将无法直接读取,需要使用相应的解密算法进行解密。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!