C#给压缩包添加密码验证
时间: 2024-09-11 09:11:21 浏览: 26
在C#中,你可以使用System.IO.Compression命名空间下的`ZipFile`类以及`PasswordProtection`类来为ZIP压缩文件添加密码验证。以下是一个简单的示例,展示如何创建一个加密的ZIP文件:
```csharp
using System;
using System.IO;
using System.IO.Compression;
public class ZipWithPasswordExample
{
public static void Main()
{
string sourceFolder = "C:\\YourSourceFolder";
string destinationZip = "C:\\YourDestination.zip";
string password = "YourPassword";
try
{
// 创建一个密码保护的流
using (FileStream zipStream = new FileStream(destinationZip, FileMode.Create))
using (DeflateStream deflateStream = new DeflateStream(zipStream, CompressionLevel.Optimal))
using (ZipArchive archive = ZipArchive.Create(deflateStream, ZipArchiveMode.Update, true))
{
// 添加源目录到zip文件
AddDirectoryToZip(sourceFolder, archive, "");
// 设置密码保护
archive.SetPassword(Encoding.UTF8.GetBytes(password));
}
}
catch (Exception ex)
{
Console.WriteLine($"Error occurred: {ex.Message}");
}
Console.WriteLine("Password protected ZIP file created successfully.");
}
private static void AddDirectoryToZip(string sourcePath, ZipArchive archive, string folderName)
{
if (!Directory.Exists(sourcePath))
return;
foreach (string filePath in Directory.GetFiles(sourcePath))
{
string relativeFilePath = Path.Combine(folderName, Path.GetFileName(filePath));
archive.CreateEntryFrom(file: filePath, entryName: relativeFilePath);
}
foreach (string subDirectory in Directory.GetDirectories(sourcePath))
{
AddDirectoryToZip(subDirectory, archive, Path.Combine(folderName, Path.GetFileName(subDirectory)));
}
}
}
```
在这个例子中,你需要替换`sourceFolder`、`destinationZip`和`password`变量为你实际的路径和密码。当尝试打开这个ZIP文件时,如果没有正确的密码,将无法访问其内容。