2015-12-06 47 views
0
的密钥

的正确方法我使用下面库做客户端加密 http://bitwiseshiftleft.github.io/sjcl/什么是加密AES

它正常工作,用户定义密码和密钥,我加密对客户的一切在推送到服务器之前。

我想让用户交互更容易,目前用户既忘记密钥又忘记密码,我想用用户定义的密码加密密钥并将其连接到密文。对此有什么好的方法?

什么是加密使用用户定义的密码密钥,用密文相连来的好方法?

+2

一般来说,您使用“密钥扩展”将密码转换为密钥,然后使用它来加密保存的密钥。 – chrylis

回答

1

您可以使用键伸缩为chrylis表示。在这种情况下,您可以使用PBKDF2,bcrypt,scrypt或Argon2从密码生成密钥。您需要配置工作因子并用密文保存salt。

后你产生这样一个关键你可以用(加密)与它的另一个随机数据的关键。您也可以直接使用它或与KBFDF(如HKDF)一起使用以生成数据密钥。

+0

我对此很新,所以请原谅我的无知。 PBKDF2是否考虑了关键拉伸?目前我正在使用用户定义的密码,然后生成一个随机盐,然后对用户定义的密码运行Pbkdf2 1000 x以生成256位密钥。我的问题是,我如何安全地将密钥与我的密文连接,然后解密以解密密文?我或多或少地在做这件事,我只是想知道一个很好的方法来消除记忆256密钥的必要性。 bitwiseshiftleft.github.io/sjcl/demo/ – vick

+0

你为什么要隐藏秘密密钥?您只需要通过再次运行PBKDF2来重新生成它。请注意,在最低端考虑1000次迭代,50K会更好。或者你当然可以使用非常安全的密码。 –

+0

PBKDF2会重新生成完全相同的密钥吗?我的印象是它有一些随机性,会产生一个不同的关键。使用与密钥相同的密码,salt和IV作为密钥是否安全?我一直听到,不要多次使用同一个IV。 – vick