SevenZip,许多尾随0

时间:2009-09-20 03:20:50

标签: encryption memorystream 7zip

我的数组是140bytes。 outArray是512bytes ......不是我想要的。此外,我不知道我是否正在加密。以下代码是否正确?我如何解决这个问题,那么outArray是真正的大小而不是用许多尾随的零来修复?

        var compress = new SevenZipCompressor();
        compress.CompressionLevel = CompressionLevel.Ultra;
        compress.CompressionMethod = CompressionMethod.Lzma;
        compress.ZipEncryptionMethod = ZipEncryptionMethod.Aes256;
        var sIn = new MemoryStream(inArray);
        var sOut = new MemoryStream();
        compress.CompressStream(sIn, sOut, "a");
        byte[] outArray = sOut.GetBuffer();

2 个答案:

答案 0 :(得分:4)

您正在获取整个MemoryStream缓冲区,您需要使用ToArray(),

  byte[] outArray = sOut.ToArray();

这将删除尾随零,但您仍然可以获得比输入更大的数组。压缩/加密有开销,可能大于140字节。

答案 1 :(得分:1)

许多压缩算法(我不熟悉7-zip的具体细节)会以最小输出大小生成输出。 7-zip在大型输入数据集上表现最佳,140字节不是“大”。你可能会用gzip或lzo这样的东西做得更好。您尝试了哪些其他压缩算法?