1

使用 TrueZIP,有没有办法从流中打开和修改现有的 ZIP 文件(它当然可以使用另一个流输出)?

只要我在文件系统上处理现有的真实 ZIP 文件,我就有用于修改 ZIP 的代码,但我要求所有临时文件在存储在磁盘上时都需要加密。在我们应用程序的大部分部分中,这很容易实现(使用 CipherOutputStream 和 CipherInputStream),但我有一个使用 TrueZIP 更新现有 ZIP 文件的功能。如果文件被加密,这部分显然会失败。

ZIP 文件将由不支持加密的专有应用程序使用,因此无法使用作为 ZIP 规范一部分的加密。

我们使用 TrueZIP 的原因是我们需要对 Zip64 的支持(我知道它包含在 Java 7 中,但我们现在无法切换)。

4

1 回答 1

0

不可以,存档文件必须存储在可访问的文件系统中才能与 TrueZIP 一起使用。但是您还有许多其他选择:

  • TrueZIP 使用 IOPoolService 接口的实例来管理临时文件。您可以提供自己的实现来加密所有临时文件,或者甚至将它们存储在堆上(如果它们很小)。查看 TrueZIP 驱动程序文件以查看参考实现。

  • 您可以使用 ParanoidZipRaesDriver 来使用 RAES 加密的 ZIP 文件。此驱动程序通过将用于写入存档文件的并发线程数限制为一个来确保不使用未加密的临时文件。

  • 您可以使用带有 FsOutputOption.ENCRYPT 的标准 ZIP 驱动程序来打开 WinZip AES 加密。为了确保不使用未加密的临时文件,您可以像 ParanoidZipRaesDriver 一样覆盖 ZipDriver.newOutputSocket 方法。

于 2012-05-09T12:17:52.653 回答