我有一个关于密码管理的问题。假设我有一个程序,用户输入了密码,数据被加密存储。
一种方法是:用用户的密码加密数据。优点:用户将负责密码的安全性以及如何保护您的数据。缺点:如果用户更改了密码,则必须解密和加密所有数据。
否则:使用用户以外的密码加密数据(随机)。以及用于加密随机口令的用户口令。优点:如果用户更改了密码,则不必重新加密所有内容。
至于保存用户的密码,我使用to jasypt.org。这样可以吗?什么才是正确的做法呢?我认为弱点在于加密器Jasypt。数据使用加密的AES-128。使用Jasypt,因为这是我所知道的全部。
发布于 2013-02-06 09:38:10
通常,您应该使用密码对数据密钥进行加密。
要加密,首先要将密码转换为密钥。为此,您将使用基于密码的密钥派生函数(PBKDF)。PBKDF2是目前最标准的选择。
您使用随机生成的密钥对数据进行加密。该密钥又用从密码生成的密钥进行加密。
要更改密码,请先询问原始密码。然后解密数据密钥。然后,您可以要求输入新密码并重新加密数据密钥。加密的数据本身不需要被触摸。
发布于 2013-02-06 09:35:59
基本上,您希望使用salted password hashing。CrackStation有一篇关于这个主题的很好的文章。
https://stackoverflow.com/questions/14720096
复制相似问题