java - 在 Java 中安全存储密码的最佳实践是什么

标签 java security password-storage

在 Java 桌面应用程序中存储密码的推荐方法是什么?

我希望用户能够仅输入一次凭据,而不会再次收到提示。

在个人项目中,我一直在使用 Preferences API,但我假设这与将其存储为纯文本(安全方面)没有什么不同。

非常感谢

编辑:

非常感谢您的建议。似乎有些困惑,毫无疑问是因为我可能没有把问题说得很清楚......

我将给出一个假设的场景:

假设我正在为远程数据库创建一个简单的前端,它创建一个带有用户名/密码的连接字符串。通常,每次应用程序启动时都会提示用户输入用户名/密码组合。

将密码存储在用户机器中的最佳方式是什么,无需重新输入(在应用程序启动时自动连接)。

一种“记住我”的功能(我知道这本身并不是一个很好的做法......)

EDIT2:

感谢大家的回答。 Paŭlo Ebermann 提供的信息非常丰富,Chris Smith 的链接很有趣,但我接受了 JVerstry 的链接,因为 keystore 可能是我要走的路线。

最佳答案

您可以使用本地 keystore 来放置密码而不是 key 。

回答编辑:

keystore 非常适合您的需求。如果您需要额外的保护,您可以在用户启动应用程序时要求用户输入一个密码以访问所有密码。然后,您可以使用启动应用程序时使用的密码,通过简单的加盐拉伸(stretch)方法(生成加密 key )来保护存储的数据库密码。

关于java - 在 Java 中安全存储密码的最佳实践是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7017688/

相关文章:

security - 使用Go linter遇到安全问题

python - 为什么在 Python 中需要在哈希之前声明编码,以及如何执行此操作?

java - 什么是NullPointerException,我该如何解决?

java - 监控部署在 Glassfish 中的 webapp

java - Android 中来自 OpenCV 图像的多个 View

php - 使用这个自定义哈希函数,我是否遗漏了任何明显的安全漏洞?

php - Symfony2 安全配置的 InvalidConfigurationException

node.js - 使用 pbkdf2 的 SALT 和 HASH

bash - Bash 中的密码管理

java - 如何在Struts2中实现基于角色的访问控制、身份验证和 session 管理?