【问题标题】:password management密码管理
【发布时间】:2013-01-21 02:54:57
【问题描述】:

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

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

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

至于保存用户密码,我使用的是 jasypt.org。没事吧?正确的方法是什么? 我认为弱点在于加密器 Jasypt。 使用 AES-128 加密的数据。 使用 Jasypt,因为这就是我所知道的。

【问题讨论】:

  • Jasypt 总体上似乎遵守完善的加密标准,是的。不会将此作为额外的答案,因为我不能保证图书馆。

标签: java encryption passwords password-encryption


【解决方案1】:

一般情况下,您应该使用密码加密 数据密钥

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

您使用随机生成的密钥加密数据。该密钥又使用从密码生成的密钥进行加密。

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

【讨论】:

    【解决方案2】:

    基本上你想使用salted password hashingCrackStation 有一篇关于这个主题的非常好的文章。

    【讨论】:

    • 您指的是有趣的文章,但这只是您回答的问题的一半。
    • @owlstead UR 正确,我简要地阅读了问题,并认为它是关于存储密码的! +1 给你。