我对密码管理有疑问。 假设我有一个程序,用户输入密码,数据以加密方式存储。
一种方法是: 使用用户密码加密数据。 专业人士:用户将负责密码的安全性以及数据的安全性。 缺点:如果用户更改密码,则必须解密并加密所有数据。
否则: 数据使用用户以外的密码加密(随机)。用户密码用于加密随机密码。 优点:如果用户更改密码,则无需重新加密所有内容。
至于保存用户的密码,我正在使用jasypt.org。好吗?这样做的正确方法是什么? 我认为弱点在于加密器Jasypt。 加密AES-128的数据。 使用Jasypt,因为这就是我所知道的。
答案 0 :(得分:7)
通常,您应该使用密码加密数据密钥。
要加密,密码将首先转换为密钥。您将使用基于密码的密钥派生函数(PBKDF)。 PBKDF2目前是最标准的选择。
使用随机生成的密钥加密数据。该密钥依次使用密码生成的密钥加密。
要更改密码,请先询问原件。然后解密数据密钥。然后,您可以要求输入新密码并重新加密数据密钥。不必触及加密数据本身。
答案 1 :(得分:3)
基本上你想使用salted password hashing
。 CrackStation有一篇关于这个主题的非常好的文章。