关于用于压缩文件的免费库的建议

时间:2020-03-06 15:04:09  来源:igfitidea点击:

我需要对文件进行压缩和密码保护。是否有一个好的(免费)库?

这需要由第三方打开,因此密码保护需要使用标准工具。

解决方案

Is there a good (free) library for this?

java.util.zip将执行压缩,但不会执行密码。不,我不知道有没有免费的。我见过的最便宜的是开发人员座位150美元。

7-Zip可以选择在其命令行模式下添加密码。也许我们可以执行它以获得此结果(并且它也具有良好的压缩比)。

缺点:外部流程,难以移植(即使7-Zip本身也可以移植),不确定发行许可证。

请注意,InfoZip的Zip实用程序也具有高度的可移植性,也支持密码。

如果我们提供了更好的使用方案,那么还有其他选择。

  • 我们是否需要使用可以处理zip密码的标准Zip工具打开zip?
  • 与上一个问题相同,我们是否要将这个zip传递给必须打开zip的外部实体?
  • 它仅是内部的,我们只想保护zip的内容吗?

对于3,我们可以只使用Java将zip的流内容加密为普通文件,可能最好将文件扩展名更改为.ezip或者类似的文件。

对于1和2,我们可以使用上述提到的chillkat解决方案,或者等效的解决方案。
但是请注意,chillkat不是纯Java解决方案,它使用JNI。

其他信息:我在Google上搜索了更多,确实,这是一个非常普遍的问题,而且似乎没有免费的解决方案(还好吗?)。

现在,已经很好地定义了Zip加密的标准算法:有关.ZIP文件格式的信息,请参阅PKWARE的应用笔记。它似乎是对加密流进行的加密。如果有人想编码...

现在,我想知道为什么Sun不将其包含在其库中?缺乏标准?专利/法律问题?太弱而无法使用?

这不是答案,但是在评估潜在解决方案时要谨记。

关于zip加密的一件事很重要:

zip加密有几种类型。旧类型(原始zip标准的一部分)一点都不值得打扰(可以在不到10分钟的时间内使用在线轻松获得的应用将其破解)。

如果要对zip文件进行任何形式的加密,请确保使用一种强大的加密标准(我认为WinZip的128位和256位AES标准是最受支持的)。这是我们在开发自己的Java加密zip系统时使用的技术规格(抱歉,仅供内部使用,不能提供源代码)

比没有加密更糟糕的是,我们以为自己加密了并且错了:-)

经过大量搜索,我发现了三种方法:

一组免费的源代码,适用于单个文件zip。但是,没有许可证。用法是AesZipOutputStream.zipAndEcrypt(...)。
http://merkert.de/de/info/zipaes/src.zip
(https://forums.oracle.com/forums/thread.jspa?threadID=1526137)

更新:该代码现已获得Apache许可,并在http://code.google.com/p/winzipaes/上发布。它为我工作(zip中的一个文件),并且很好地填补了Java开放源代码库中的一个空白。

商业产品(撰写本文时为500美元)。我无法验证此方法是否有效,因为他们的试用许可方法很复杂。它也是一个移植的.NET应用程序:
http://www.nsoftware.com/ipworks/zip/default.aspx

商业产品(撰写本文时为290美元)。仅适用于Wnidows,因为它使用dll:
http://www.example-code.com/java/zip.asp

我们也可以尝试TrueZip。有关功能,请参见以下链接:
https://christian-schlichtherle.bitbucket.io/truezip/

可以在以下位置找到TrueZip的后继产品:
https://christian-schlichtherle.bitbucket.io/truevfs/