Установите пароль на Zip-файл с помощью DotNetZip

Я использую DotNetZip для архивирования файлов, но мне нужно установить пароль в архиве.

Я пытался:

public void Zip(string path, string outputPath)
    {
        using (ZipFile zip = new ZipFile())
        {
            zip.AddDirectory(path);
            zip.Password = "password";
            zip.Save(outputPath);
        }
    }

Но выходной почтовый индекс не имеет пароля.

Параметр path имеет подпапку, например: path = c:\path\ и внутри пути у меня есть subfolder

Что не так?


person Jean Carlos    schedule 18.10.2016    source источник
comment
предположим, что путь C:\folder1\folder2\file1.txt какую папку вы хотите заархивировать и заблокировать паролем?   -  person Amey Kamat    schedule 18.10.2016
comment
Нет, путь — это папка, в которой есть подпапка. Я хочу, чтобы DotNetZip заархивировал мою подпапку и файлы внутри нее. Я могу это сделать, но пароль не работает. Я впервые использую эту библиотеку.   -  person Jean Carlos    schedule 18.10.2016


Ответы (1)


Пароль будет применяться только к записям, добавленным после установки свойства Password. Чтобы защитить добавляемый каталог, просто установите пароль перед вызовом AddDirectory.

using (ZipFile zip = new ZipFile())
{
    zip.Password = "password";
    zip.AddDirectory(path);
    zip.Save(outputPath);
}

Обратите внимание, что это связано с тем, что пароли в zip-файлах назначаются записям в zip-файле, а не в самом zip-файле. Это позволяет вам защитить некоторые из ваших zip-файлов, а некоторые нет:

using (ZipFile zip = new ZipFile())
{
    //this won't be password protected
    zip.AddDirectory(unprotectedPath);
    zip.Password = "password";
    //...but this will be password protected
    zip.AddDirectory(path);
    zip.Save(outputPath);
}
person petelids    schedule 18.10.2016
comment
Спасибо, решение хорошее. Но как мы можем скрыть имена файлов при шифровании? - person Habip Oğuz; 26.07.2019
comment
@HabipOğuz - Не думаю, что сможешь. Шифрование находится в файлах, а не в самом zip-контейнере. Единственный известный мне способ добиться этого — двойное шифрование, поэтому, если кто-то откроет zip-архив, все, что он увидит, — это другой zip-файл. - person petelids; 26.07.2019
comment
@petelids, Химм, большое спасибо. На этот раз я буду искать купленный, например WinRar. - person Habip Oğuz; 26.07.2019
comment
@HabipOğuz - я считаю, что 7zip может делать то, что вы хотите. - person petelids; 26.07.2019