1

我的数组是 140 字节。outArray 是 512 字节...不是我想要的。另外我不知道我是否正确加密。下面的代码是否正确?我该如何解决这个问题,所以 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();
4

2 回答 2

4

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

  byte[] outArray = sOut.ToArray();

这将删除尾随零,但您可能仍会得到一个大于输入的数组。压缩/加密存在开销,可能大于 140 字节。

于 2009-09-20T10:37:13.010 回答
1

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

于 2009-09-20T03:24:29.133 回答