Zip файлов в .net ядра с паролем

Обновить

November 2018

Просмотры

1.7k раз

5

Я пытаюсь создать молнию (или другие форматы сжатия) файлов в .net ядра с паролем, но я не могу найти что - либо без затрат.

Я использую , System.IO.Compressionно это не метод с паролем.

Я только нашел этот инструмент Chilkat , но это не бесплатно.

Может кто-нибудь мне помочь?

Спасибо!

1 ответы

2

Использование SharpZipLib.NETStandard NuGet пакета.

    public async Task<byte[]> ZipAsync(IEnumerable<KeyValuePair<string, Stream>> files, string mime, string password)
    {
        ExceptionHelper.ThrowIfNull(nameof(files), files);
        ExceptionHelper.ThrowIfNull(nameof(mime), mime);

        using (var output = new MemoryStream())
        {
            using (var zipStream = new ZipOutputStream(output))
            {
                zipStream.SetLevel(9);

                if (!string.IsNullOrEmpty(password))
                {
                    zipStream.Password = password;
                }

                foreach (var file in files)
                {
                    var newEntry = new ZipEntry($"{file.Key}.{mime}") { DateTime = DateTime.Now };
                    zipStream.PutNextEntry(newEntry);

                    await file.Value.CopyToAsync(zipStream);
                    zipStream.CloseEntry();
                }
            }

            return output.ToArray();
        }
    }