C#中是否有压缩和加密库?

3
我希望使用C#压缩一些文件(到ZIP格式),并在可能的情况下对其进行加密。有没有什么方法可以做到这一点?
加密是否可以作为压缩本身的一部分完成?
9个回答

12

注意:System.IO.Compression非常适合压缩单个文件,但它不能将多个源文件压缩成一个zip“归档”文件。 - Scott Fletcher
2
我一直在使用System.IO.Compression (.Net 4.6)中的ZipFile.CreateFromDirectory,它可以从指定目录中的文件创建一个单独的zip归档文件。 - AH.

7

6

我知道这个问题已经很老了,但我还是要发表我的意见。

首先,一些定义:

  • Zip:将文件和文件夹重新组合成一个单一文件的存档格式,并可选择加密数据。
  • Deflate:在Zip文件中用于压缩数据的压缩算法之一。最流行的一种。
  • GZip:使用deflate压缩的单个文件,带有小的头部和脚注。

现在,System.IO.Compression不会进行Zip归档。它执行deflate和gzip压缩,因此会将单个数据块压缩为另一个单个数据块。

因此,如果您正在寻找可以组合多个文件和文件夹的存档格式,则需要像以下Zip库:

如果您只需要压缩和加密单个数据块,则可以查看 System.IO.CompressionSystem.Security.Cryptography

1

GZipStream 类是一种本地处理压缩的方式。

至于加密,有许多 方法 可以做到这一点,其中大部分在System.Security命名空间中。它们可以被链接在一起(加密已压缩的流或压缩已加密的流)。


1
由于无法压缩随机数据,因此压缩加密流是困难的。 - Mason Wheeler
你当然可以压缩随机数据,只是最终使用的空间几乎相同。 - Vinko Vrsalovic

1

Chilkat 提供了用于压缩和加密的 .NET 库。


0

我不确定这些步骤是否可以合并,但.NET对基本的加密有很好的支持。这里有一篇相关文章


0
如果无法组合,先进行压缩再进行加密。对已经加密的文件进行压缩会导致压缩比率较低,因为会去除很多冗余信息。

-1

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接