Java-为进一步处理保留密码

Java-为进一步处理保留密码,java,security,encryption,passwords,Java,Security,Encryption,Passwords,在我们的系统中,数据可以重新加密给用户。为此,所有数据都使用新密钥进行解密和加密。密钥最重要的部分是用户的密码。 新密码仅在内存中重新加密期间保留。 在未来,这应该与日期和时间一起规划。但为此,我需要用户的密码在以后的时间 我的问题:如果我必须持有密码,哪种方法是最好的 只是在会话中作为纯文本非常糟糕!! 在会话中加密,密钥在数据库中。将密码与加密密码的位置分开解密的密钥。如果重新加密挂起,则将解密并使用该密码。 密码在数据库中再次作为纯文本非常糟糕!! 我不喜欢这些想法,因为它们都涉及安全风险

在我们的系统中,数据可以重新加密给用户。为此,所有数据都使用新密钥进行解密和加密。密钥最重要的部分是用户的密码。 新密码仅在内存中重新加密期间保留。 在未来,这应该与日期和时间一起规划。但为此,我需要用户的密码在以后的时间

我的问题:如果我必须持有密码,哪种方法是最好的

只是在会话中作为纯文本非常糟糕!! 在会话中加密,密钥在数据库中。将密码与加密密码的位置分开解密的密钥。如果重新加密挂起,则将解密并使用该密码。 密码在数据库中再次作为纯文本非常糟糕!!
我不喜欢这些想法,因为它们都涉及安全风险。第二个是我认为最“安全”的,但也许有人有更好的解决方案

为什么不存储为单向散列呢?谢谢你的回答。不幸的是,我在这里没有赢得任何东西。散列实际上就是密码。无论我是基于密码还是密码哈希的密钥生成都无关紧要。我仍然需要保留它。为什么在成功授权用户后不为会话创建随机密钥?在我看来,用户密码不应该是密钥的一部分。我不能描述每一个细节,但我所说的密码是加密的一部分,比如说dataPassword或dataPin。用户身份验证是一个独立的过程。但无论如何,问题仍然是一样的:如何长时间持有pin/密码/会话哈希等。即使我生成了一个随机密钥,这也是要保护的密钥。