3

我想压缩一些文件(成ZIP格式)并尽可能使用 C# 加密它们。有没有办法做到这一点?

加密可以作为压缩本身的一部分进行吗?

4

9 回答 9

12

对于压缩,查看System.IO.Compression命名空间,对于加密,查看System.Security.Cryptography.

于 2008-09-16T10:40:07.703 回答
7

对于 Zip 压缩,你看过http://www.icsharpcode.net/OpenSource/SharpZipLib/

于 2008-09-16T10:50:12.407 回答
6

我知道这个问题已经很老了,但我必须加上我的两分钱。

首先,一些定义:

  • Zip:用于将文件和文件夹重新组合为单个文件的存档格式,并可选择加密数据。
  • Deflate:Zip 文件中用于压缩数据的压缩算法之一。最受欢迎的一种。
  • GZip:使用 deflate 压缩的单个文件,具有较小的页眉和页脚。

现在,System.IO.Compression 不进行Zip 归档。它确实进行了deflategzip压缩,因此会将单个数据块压缩成另一个数据块。

因此,如果您正在寻找可以对许多文件和文件夹进行分组的存档格式,您需要 Zip 库,例如:

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

于 2008-09-23T19:53:15.950 回答
1

GZipStream类是处理压缩的本机方式。

至于加密,有很多 方法可以做到,其中大部分在 System.Security 命名空间中。它们可以链接完成(加密压缩流或压缩加密流)。

于 2008-09-16T10:40:38.437 回答
1

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

于 2008-09-16T12:47:52.267 回答
0

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

于 2008-09-16T10:41:37.140 回答
0

如果不能合并,先压缩再加密。压缩已经加密的文件会导致压缩率变差,因为很多冗余被删除了。

于 2008-09-16T11:13:38.997 回答
-1

这是一个有用的话题:

帮助从 .Net 创建 Zip 文件并从 Java 读取它们

System.IO.Packaging 命名空间为您提供有用的类来压缩 zip 格式的数据并支持权限管理。

于 2008-09-16T10:40:31.590 回答
-1

没有任何东西可以直接在 C# 中使用,但是您可以使用 J# 中的一些库来为您完成:

http://msdn.microsoft.com/en-us/magazine/cc164129.aspx

应该做你想做的事吗?

关于加密,请查看以下链接:

http://www.codeproject.com/KB/security/fileencryptdecrypt.aspx

http://www.obviex.com/samples/EncryptionWithSalt.aspx

于 2008-09-16T10:40:50.323 回答