我基本上是在一个Java/JSP驱动的网站上做以下事情:
- 用户提供密码
- 密码用于构建一个强加密的存档文件(zip或其他任何文件),其中包含一个文本文件以及存储在服务器上的许多二进制文件。它本质上是用户文件和设置的备份。
- 稍后,用户可以上传文件,提供原始密码,并且站点将解密并解压缩存档,将提取的二进制文件保存到服务器上的适当文件夹中,然后读取文本文件,以便站点可以恢复用户的旧设置和关于二进制文件的元数据。
这是建设/加密存档,然后提取其内容,我试图找出如何做。我真的不关心的存档格式,除此之外,它是非常安全的。
我的问题的理想解决方案将非常容易实现,并且只需要经过测试的自由和非限制性许可证的库(例如apache,berkeley,lgpl)。
我知道TrueZIP和WinZipAES库;前者看起来有点大材小用,我不知道后者有多稳定……有没有其他的解决方案可以很好地工作?
4条答案
按热度按时间ctehm74n1#
如果您知道如何使用java.util.zip包创建zip文件,则可以创建PBE Cipher并将其传递给CipherOutputStream或CipherInputStream(取决于您是阅读还是写入)。
以下是您的入门指南:
knpiaxh12#
答案已经给出了(正如Kevin指出的那样,使用密码),所以我只是在做一个关于你的topicstart中似乎缺少的重要事项的建议:请确保您使用的是
HTTPS
而不是HTTP
。否则,具有网络嗅探器的人将能够从数据包中获取用户提供的密码。如何做到这一点取决于相关的应用服务器。最好是参考其文档。如果是例如Apache Tomcat,那么您可以在Tomcat SSL HOW-TO中找到所有内容。希望这能帮上忙。
23c0lvtd3#
虽然它可能不是特定于您的查询,但我想知道truecrypt是否有用。您的Web服务器可以创建一个加密的容器,将zip文件复制到其中。然后可以下载加密的容器。可能有点混乱,但加密应该很强,下载的映像可以安装在各种操作系统上。
vatpfxk54#
这里肯定有一些关于如何解决您的问题的建议,但我在回复中遗漏了一个非常大的“但是”。对于“强加密”的任何合理定义,您不能同时满足“基于密码”和“强加密”。