首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有AESKeySize参数的ZipEntry似乎不允许解压缩/解压缩

带有AESKeySize参数的ZipEntry似乎不允许解压缩/解压缩
EN

Stack Overflow用户
提问于 2022-08-22 00:11:24
回答 1查看 26关注 0票数 0

下面的代码似乎工作得很好。但是,当我将加密值(注释掉的代码)应用到ZipEntry时,一切似乎就分崩离析了。我得到了以下例外: ICSharpCode.SharpZipLib.Zip.ZipException:“不支持此条目的压缩方法”。目前,我不知道“压缩方法”有什么问题。我尝试了所有这些方法,并将压缩级别设置为0。似乎什么都起不到作用。有人能帮我吗?

代码语言:javascript
复制
using ICSharpCode.SharpZipLib.Core;
using ICSharpCode.SharpZipLib.Zip;
using System;
using System.IO;

    public byte[] ZipPayload(byte[] data)
    {
        using (var outputStream = new MemoryStream())
        using (var zipStream = new ZipOutputStream(outputStream))
        {
            zipStream.Password = "abc";
            zipStream.SetLevel(0);

            var zipEntry = new ZipEntry("ZipEntry")
            {
                //AESKeySize = 128,
                //CompressionMethod = CompressionMethod.Stored
                //CompressionMethod = CompressionMethod.Deflated
                //CompressionMethod = CompressionMethod.Deflate64
                //CompressionMethod = CompressionMethod.BZip2
                //CompressionMethod = CompressionMethod.LZMA
                //CompressionMethod = CompressionMethod.PPMd
                //CompressionMethod = CompressionMethod.WinZipAES
                //CompressionMethod = CompressionMethod.WinZipAES
            };
            zipStream.PutNextEntry(zipEntry);

            var inputMemoryStream = new MemoryStream(data);
            StreamUtils.Copy(inputMemoryStream, zipStream, new byte[4096]);
            zipStream.CloseEntry();
            zipStream.IsStreamOwner = false;

            return outputStream.ToArray();
        }
    }

    public byte[] UnzipPayload(byte[] data)
    {
        using (var outputStream = new MemoryStream())
        using (var inputStream = new MemoryStream(data))
        {
            using (var zipStream = new ZipInputStream(inputStream))
            {
                zipStream.Password = "abc";
                zipStream.GetNextEntry();
                zipStream.CopyTo(outputStream);
            }
            return outputStream.ToArray();
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2022-08-22 01:17:57

看起来,为了解压缩有效载荷,您需要使用如下内容:

代码语言:javascript
复制
  using (var zipFile = new ZipFile(stream))
  {
       zipFile.Password = "abc"
       var zipEntry = zipFile.GetEntry("ZipEntry");

       using (var zipInputStream = zipEntry.GetInputStream(zipEntry))
       {

       }
  } 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73439101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档