我想压缩一些文件(到 压缩 格式)并在可能的情况下使用 C# 对其进行加密。有什么方法可以做到这一点吗?

加密可以作为压缩本身的一部分来完成吗?

有帮助吗?

解决方案

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

其他提示

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

我知道这个问题已经很老了,但我必须补充两点。

首先,一些定义:

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

现在,System.IO.Compression 确实 不是 进行 Zip 归档。确实如此 放气压缩包 压缩,因此会将单个数据块压缩为另一个单个数据块。

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

如果您只需要压缩和加密单个数据块,那么请查看 系统.IO.压缩系统.安全.密码学.

压缩流 class 是处理压缩的本机方法。

至于加密,有 许多 方法 要做到这一点,大多数都在 System.Security 命名空间中。它们可以链接起来(加密压缩流或压缩加密流)。

奇尔卡特 提供用于压缩和加密的.NET 库。

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

如果无法组合,则先压缩再加密。压缩已经加密的文件将导致压缩率较低,因为大量冗余被删除。

这是一个有用的主题:

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

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

没有任何东西可以直接在 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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top