【发布时间】:2014-08-21 09:31:40
【问题描述】:
我正在开发一个应用程序,它要求用户输入他的帐户名和密码,以便登录在线论坛等。
请注意,我实际上并没有通过我的应用程序在 Internet 上传输任何数据,我只是连接到特定的服务器。我正在使用HtmlUnit 获取论坛链接,获取正确的登录表单,填写数据并提交。网络上的实际数据中继由第三方公司管理。
现在到实际问题:
一些用户希望能够保存他们的凭据,这样他们就不必在启动应用程序时重新输入这些凭据。
我将他们的凭据保存到一个.txt 文件中,我使用Password Based Encryption with MD5 and DES algorithm 和static password 和static salt 对其内容进行加密。我主要对这些文件进行加密,因此如果他们不小心将此文件发送给某人,他们将无法如此轻松地获取该信息,并希望避免麻烦。
据我了解,由于我是密码学的菜鸟,因此使用硬编码盐和硬编码密码并不是一种非常安全的技术,但是当我在本地保存数据时可能就足够了。 我在这里吗?
.txt 文件也是存储此类数据的安全方式吗?如果没有,你有什么建议?
【问题讨论】:
-
我认为只要数据本身经过加密和哈希处理就可以了。现在反转散列你不能真正做到(或应该能够做到)。所以使用一些只有你知道或你的程序可以计算的盐的加密算法。
-
最好在security.stackexchange.com上提问。
-
如果你想自己动手做些有趣或教育的事,很酷。如果没有,有图书馆可以为你做这些事情。 Jasypt 就是这样一个库。
-
任何有权访问您的应用程序的人都可以提取密码、获取加密文件并对其进行解密,从而读取用户的明文凭据,对吗?
-
@DavidConrad 假设他们可以访问其他用户的文件,那么是的,但这意味着他们的系统已经受到威胁。我将每个文件本地存储在用户的机器上。此文件从不通过互联网中继,仅在加密/解密时访问。
标签: java encryption passwords user-data sensitive-data