下面的代码似乎工作得很好。但是,当我将加密值(注释掉的代码)应用到ZipEntry时,一切似乎就分崩离析了。我得到了以下例外: ICSharpCode.SharpZipLib.Zip.ZipException:“不支持此条目的压缩方法”。目前,我不知道“压缩方法”有什么问题。我尝试了所有这些方法,并将压缩级别设置为0。似乎什么都起不到作用。有人能帮我吗?
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();
}
}发布于 2022-08-22 01:17:57
看起来,为了解压缩有效载荷,您需要使用如下内容:
using (var zipFile = new ZipFile(stream))
{
zipFile.Password = "abc"
var zipEntry = zipFile.GetEntry("ZipEntry");
using (var zipInputStream = zipEntry.GetInputStream(zipEntry))
{
}
} https://stackoverflow.com/questions/73439101
复制相似问题