【发布时间】:2013-11-28 22:58:29
【问题描述】:
我正在开发一个将用户密码存储在 .db 文件中的小型 Java 桌面应用程序。当用户创建一个新数据库时,用户必须为该数据库创建一个主密码,以便访问他们可能选择存储在其中的任何 facebook 或 twitter 密码。我的问题是,我应该在哪里以及如何安全地存储主密码?
我的想法是加密主密码并在存储之前添加盐,然后将密码存储在加密的文本文件或 .db 文件中,然后在用户尝试访问数据库时读取它。我只是在寻找有关这是否是一个好主意或是否有更好的选择的指导。
应用程序是桌面应用程序而不是 Web 应用程序。
【问题讨论】:
-
不是加密,而是散列...我觉得使用散列而不是加密更安全。
-
@codeMan Mhmm,你如何获得这个哈希? SHA IS 加密
-
有很多实用程序类,只需决定一个散列算法并使用它。例如像 MD5 之类的东西
-
如果这个应用程序完全存在于他们的桌面上,那么就不可能完全保护它。这也是 DRM 不可能的原因。如果您的源代码可以读取密码,那么知道如何读取字节码的人也可以读取密码。
-
@Cruncher 这就是为什么您使用一种方式散列(理想情况下是 salt+hash)密码而不是对其进行加密的原因......应用程序无法“读取密码” - 它只能判断用户的密码是否输入是否有效。
标签: java security encryption passwords desktop-application