Java 密码管理

Java 密码管理,java,encryption,passwords,password-encryption,Java,Encryption,Passwords,Password Encryption,我有一个关于密码管理的问题。 假设我有一个程序,用户输入密码,数据被加密存储 一种方法是: 使用用户密码加密数据。 优点:用户将负责密码的安全性以及数据的安全性。 缺点:如果用户更改密码,则必须对所有数据进行解密和加密 否则: 数据使用用户以外的密码加密(随机)。以及用于加密随机密码的用户密码。 优点:如果用户更改密码,则不必重新加密所有内容 至于保存用户密码,我正在使用jasypt.org。可以吗?正确的方法是什么? 我认为加密机的弱点在于Jasypt。 使用加密的AES-128存储数据。 使

我有一个关于密码管理的问题。 假设我有一个程序,用户输入密码,数据被加密存储

一种方法是: 使用用户密码加密数据。 优点:用户将负责密码的安全性以及数据的安全性。 缺点:如果用户更改密码,则必须对所有数据进行解密和加密

否则: 数据使用用户以外的密码加密(随机)。以及用于加密随机密码的用户密码。 优点:如果用户更改密码,则不必重新加密所有内容

至于保存用户密码,我正在使用jasypt.org。可以吗?正确的方法是什么? 我认为加密机的弱点在于Jasypt。 使用加密的AES-128存储数据。
使用Jasypt是因为我只知道这些。

基本上你想要使用
盐密码散列。有一篇关于这个主题的非常好的文章。

通常,您应该使用密码加密数据密钥

要加密,首先将密码转换为密钥。您将为此使用基于密码的密钥派生函数(PBKDF)。PBKDF2是目前最标准的选择

您可以使用随机生成的密钥加密数据。该密钥依次使用由密码生成的密钥进行加密


要更改密码,请先请求原始密码。然后解密数据密钥。然后,您可以要求输入新密码并重新加密数据密钥。加密数据本身不必被触摸。

您所指的是一篇有趣的文章,但这只是您回答问题的一半。@owlstead您是对的,我简短地阅读了这个问题,尽管它是关于存储密码的+对你来说,Jasypt总体上似乎遵守了完善的加密标准,是的。我不会再回答这个问题了,因为我不能为图书馆担保。