【发布时间】:2011-08-23 20:57:37
【问题描述】:
我的问题是我在一个struts2 Web 应用程序上,我正在动态创建一个sqlite 数据库文件。我需要保护该文件(当用户下载该 sqlite 文件时,它需要密码才能打开它,例如受密码保护的 PDF)。有没有其他方法可以完成这个任务?
【问题讨论】:
标签: java encryption sqlite password-protection
我的问题是我在一个struts2 Web 应用程序上,我正在动态创建一个sqlite 数据库文件。我需要保护该文件(当用户下载该 sqlite 文件时,它需要密码才能打开它,例如受密码保护的 PDF)。有没有其他方法可以完成这个任务?
【问题讨论】:
标签: java encryption sqlite password-protection
C 中有一个可用的加密库 (sqlite-crypt),但如果您想用 Java 进行加密,我只需像任何其他文件一样加密该文件,并为用户提供一个带有密码的解密工具。请参阅file encryption/decryption in Java 的此示例。
【讨论】:
最好的解决方案是安装 SqlCipher 或类似的东西,但这意味着您必须在 Java 环境中构建和安装 C 扩展。
如果您在启动应用程序时解密 SQLite 数据库,然后在结束时对其进行加密,那么它在您实际使用它时会“暴露”(如果应用程序异常终止)。使用 SqlCipher 数据始终是加密的,即使在操作中间也是如此。另一种选择是加密/解密存储在数据库中的单个“blob”,但是您无法搜索它们,等等。
【讨论】:
您可以使用 Zip4j (http://www.lingala.net/zip4j/) 创建受密码保护的 zip 文件。
【讨论】: