2016-07-22 7 views
0

Я разрабатываю небольшую утилиту в C#, где я вставляю много сжатых файлов. Эти файлы находятся в разных расширениях (например, .zip, .rar, .tar, .uue). Теперь я не хочу извлекать эти файлы, но я просто хочу проверить, защищены ли эти файлы защитой паролем или нет.Как я могу проверить, защищен ли пароль сжатым файлом (всех форматов - zip/rar/tar/uue), не извлекая его в C#?

Я использовал DotNetZip.dll для файлов с расширением .zip, который отлично работает. Я нашел dll Chilkat для файлов .rar.

Может ли кто-нибудь предоставить мне другие dll для других расширений или лучшее решение для всех сжатых файлов? Заранее спасибо.

+0

вы также можете использовать SharpZipLib, он написан C# для платформы .NET и работает с большинством форматов сжатия. https://www.nuget.org/packages/SharpZipLib/ – Maverick

ответ

1

Использование SharpZipLib выполняется следующим образом. И по работам я подразумеваю entry.IsCrypted возвращает true или false, основываясь на том, есть ли пароль для первой записи в zip-файле.

var file = @"c:\testfile.zip"; 
FileStream fileStreamIn = new FileStream(file, FileMode.Open, FileAccess.Read); 
ZipInputStream zipInStream = new ZipInputStream(fileStreamIn); 
ZipEntry entry = zipInStream.GetNextEntry(); 
Console.WriteLine("IsCrypted: " + entry.IsCrypted); 

Существует простой учебник по использованию SharpZipLib для CodeProject.

Таким образом, простая реализация выглядит примерно так:

public static bool IsPasswordProtectedZipFile(string path) 
{ 
    using (FileStream fileStreamIn = new FileStream(path, FileMode.Open, FileAccess.Read)) 
    using (ZipInputStream zipInStream = new ZipInputStream(fileStreamIn)) 
    { 
     ZipEntry entry = zipInStream.GetNextEntry(); 
     return entry.IsCrypted; 
    } 
} 

Примечание нет никакой реальной обработки ошибок или что-нибудь ...

исх: How to validate that a file is a password protected ZIP file, using C#

+0

это работает с расширением .zip. Я хочу решение для расширений .rar, .tar, .uue. – Divya

+1

просто измените все типы или форматы на zip и после проверки снова измените на старые расширения. Удачи – sms247

+0

эти файлы крайне важны, и я не могу играть с их расширениями. :) – Divya