如何创建一个普通的有密码保护的ZIP压缩包?

10

我的应用程序将多个文件压缩成zip文件,并将其保存到SD卡上,然后通过电子邮件发送该zip文件到一个地址。

使用以下代码进行压缩:在Android中以编程方式压缩文件

现在的问题是,如何在zip文件上加密码,以便授权人员在计算机(Windows、Mac或Ubuntu)上打开它时可以使用提供的密码提取文件?

我已经阅读了这篇文章:Android zip file authentication,但我认为读取zip的操作是在另一台手机上完成的... 我错了吗? 如果有任何人知道,请告诉我!谢谢!


如何在zip文件上设置密码,以便在计算机(Windows、Mac或Ubuntu)上打开它的人可以提取文件?您是指不想让他们打开吗?如果您希望他们“在计算机上打开并提取文件”,那么我的问题是,当您尝试双击zip文件时会发生什么(在PC上)? - owen gerig
3
我不知道这个是否适用于Android本身(我甚至没有智能手机;-),但是有Java类库可以实现此功能。请参见以下链接以获取相关信息:https://dev59.com/rXVC5IYBdhLWcg3w1E_w和http://stackoverflow.com/questions/6750569/open-password-protected-zip-in-android。 - user166390
@owen gerig的问题是,“如何创建一个普通密码保护的ZIP归档文件?” :-) [我更新了标题以反映这一点。] - user166390
@pst 谢谢,那就是我的意思...我想让授权人使用我给他们的密码打开文件,但其他人不行 :) - Lily
@owen gerig - 对于造成的困惑我感到抱歉。 - Lily
显示剩余2条评论
2个回答

7

我进行了许多搜索,终于找到了一个可以轻松压缩带密码文件的好用库

压缩:

ZipArchive zipArchive = new ZipArchive();
zipArchive.zip(targetPath,destinationPath,password);

解压缩:

ZipArchive zipArchive = new ZipArchive();
zipArchive.unzip(targetPath,destinationPath,password);

Rar:

RarArchive rarArchive = new RarArchive();
rarArchive.extractArchive(file archive, file destination);

这个库的文档已经足够好了,我只是从中添加了一些示例。 它完全免费,专门为安卓编写。 Mvn 链接


你能举个在 Kotlin 中实现的例子吗? - Bhimbim
你的回答中的链接导致了404错误。 - petyr
@petyr 感谢您指出这个问题。我已经更新了我的回答。 显然,所有者删除了该库。但是您仍然可以从mvn repos中使用它。 - Milad Faridnia
1
非常感谢!@MiladFaridnia,我会使用新链接。 - petyr

2
由于Android具有JVM,您可以尝试使用所有Java库(有些会运行,有些不会,对某些库的更改也可以)。这样,我会复制并粘贴this对问题的答案(在Java中编写受密码保护的Zip文件):
经过多次搜索,我找到了三种方法:
1.一个免费的源代码集合,适用于单文件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开放源代码库中的空缺。
2.一种商业产品(写作时价格为$500)。我无法验证其是否有效,因为其试用许可证方法很复杂。它也是一个移植的.NET应用程序:http://www.nsoftware.com/ipworks/zip/default.aspx 3.一种商业产品(写作时价格为$290)。仅适用于Windows系统,因为它使用dll:http://www.example-code.com/java/zip.asp 你也必须知道,也许将它们适应Android可能不容易,但也许你很幸运,其中一些立即就能运行。
祝好运!

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