如何存储java web应用程序所需的密码?

如何存储java web应用程序所需的密码?,java,email,encryption,passwords,Java,Email,Encryption,Passwords,我已经阅读了一些关于这种情况的主题,并找到了一些解决方案,但我不确定它们是否适合我的项目 例如,本主题: 在我的web应用程序中,用户可以在我的主页上注册和做一些事情,他必须在那里登录。我正在用SCrypt保存密码。用户可以通过键入明文密码登录,然后根据数据库中的加密密码检查密码。如果密码正确,则用户可以访问控制中心 注册用户和非注册用户可以通过联系方式向我的电子邮件帐户发送电子邮件 这个联系人表单调用一个Bean,它发送一封电子邮件。要发送此电子邮件,我必须将帐户信息存储在某个位置 问题是,我

我已经阅读了一些关于这种情况的主题,并找到了一些解决方案,但我不确定它们是否适合我的项目

例如,本主题:

在我的web应用程序中,用户可以在我的主页上注册和做一些事情,他必须在那里登录。我正在用SCrypt保存密码。用户可以通过键入明文密码登录,然后根据数据库中的加密密码检查密码。如果密码正确,则用户可以访问控制中心

注册用户和非注册用户可以通过联系方式向我的电子邮件帐户发送电子邮件

这个联系人表单调用一个Bean,它发送一封电子邮件。要发送此电子邮件,我必须将帐户信息存储在某个位置

问题是,我必须解密密码。如果我保存加密的信息,帐户验证将失败

用纯文本保存密码是绝对可怕的

我考虑在应用程序启动后将密码设置到应用程序范围bean中的属性中,但我不确定这是否是一种保存方式

另一个选项是文件,如果需要密码,应用程序将从中读取。但是在这个文件中,密码被解密

保存应用程序所需密码的最佳方式是什么

EDIT1 06.04.2016 12:48:


我需要为我的EmailBean解密密码,这样该bean就可以登录到我的电子邮件帐户并发送消息。

好吧,如果您需要密码对邮件服务器进行身份验证,您需要在某个地方使用明文。如果您不取消密码要求,例如。G通过将邮件服务器配置为无需密码即可接受来自IP的邮件,您所能做的最好的事情就是通过加密来混淆密码。但它必须是可逆的,你的代码会将其反转。因此,如果有人闯入系统并访问您的代码,他也将能够解密和检索您的密码。但至少它不会以明文形式出现在文件中。

出于何种原因/任务,您需要未加密的密码?保存或使用未加密的密码很可能是错误的概念。您是说您需要用户在登录后发送密码吗?您可能需要调查“哈希”。粗略地说:您存储的不是密码(既不是明文密码,也不是加密密码),而是密码的散列。当用户键入密码时,将对其应用相同的哈希函数,并与存储的哈希进行比较。当然,这还有很多。你仍然必须安全地转移。。。盐和胡椒。。。等等等等。@Fildor他正在使用SCrypt,它甚至以加密方式保护散列,所以我认为这更像是OP的一个概念问题:-)吸血鬼哦,我明白了。谢谢我以为他只是加密了明文。谢谢你的回答。config.properties文件有什么问题?我被告知服务器之外的人无法访问它。如果有人刹车进入系统,他很可能无论如何都能得到密码。配置文件是一个安全的解决方案吗?我认为这是令人满意的,只要您的系统得到了适当的保护,使文件无法访问。在文件中加密只是另一个障碍,如果有人设法闯入系统,他可能不够坚定,无法解密。因此,这只是另一种安全措施。你是否接受它取决于你自己。