Использование SharpZipLib Как установить алгоритм шифрования? - PullRequest
0 голосов
/ 06 ноября 2018

Я пишу генератор zip-файлов, который будет использоваться третьей стороной с использованием определенного алгоритма шифрования

Перечень алгоритмов я нашел здесь: ICSharpCode.SharpZipLib.Zip.EncryptionAlgorithm

Но я не знаю, как применить алгоритм к данному zip-архиву. Вот мой код.

        using (FileStream fsOut = File.Create(fullPath + ".zip"))
        using (var zipStream = new ZipOutputStream(fsOut))
        {
            zipStream.SetLevel(3); //0-9, 9 being the highest level of compression
            zipStream.Password = "password";

            using (MemoryStream memoryStream = new MemoryStream())
            using (TextWriter writer = new StreamWriter(memoryStream))
            {
                // redacted: write data to memorytream...

                var dataEntry = new ZipEntry(fullPath.Split('\\').Last()+".txt");
                dataEntry.DateTime = DateTime.Now;
                zipStream.PutNextEntry(dataEntry);
                memoryStream.WriteTo(zipStream);
                zipStream.CloseEntry();
            }
        }

Редактировать
DotNetZip позволяет также выбрать алгоритм шифрования Zip 2.0 PKWARE.

1 Ответ

0 голосов
/ 06 ноября 2018

Как я понял из чтения кода и сообщений на форуме, EncryptionAlgorithm существует для документирования значений, доступных в стандарте Zip, а не в качестве опции для конечного пользователя.

Алгоритмы шифрования, которые фактически доступны для вас, - AES128 и AES256. Вы применяете алгоритм к каждой записи, присваивая свойство AESKeySize.

Так в вашем случае:

// Specifying the AESKeySize triggers AES encryption. Allowable values are 0 (off), 128 or 256.
// A password on the ZipOutputStream is required if using AES.
dataEntry.AESKeySize = 256;

(комментарии приходят с этой страницы https://github.com/icsharpcode/SharpZipLib/wiki/Zip-Samples)

...