Passwords 我应该如何存储密码?

Passwords 我应该如何存储密码?,passwords,password-protection,digest-authentication,password-encryption,Passwords,Password Protection,Digest Authentication,Password Encryption,我有一个需要登录的系统,但我为谁构建这个系统,需要在登录过程中传输非常安全的密码(甚至使用SSL)。所以我使用摘要访问身份验证的一个变体来传输登录请求。我现在遇到的唯一问题是如何将密码存储在数据库中(最好是安全的盐渍散列),以便它们可以与摘要请求一起使用,并且密码在任何时候都不是非散列格式,除非在客户端浏览器上保存几秒钟 因此,简而言之,我如何安全地存储密码,但允许摘要(与数据库的salt具有不同且不断变化的临时值)进行身份验证?据我所知,这种机制发送如下信息: hash(nonce + has

我有一个需要登录的系统,但我为谁构建这个系统,需要在登录过程中传输非常安全的密码(甚至使用SSL)。所以我使用摘要访问身份验证的一个变体来传输登录请求。我现在遇到的唯一问题是如何将密码存储在数据库中(最好是安全的盐渍散列),以便它们可以与摘要请求一起使用,并且密码在任何时候都不是非散列格式,除非在客户端浏览器上保存几秒钟


因此,简而言之,我如何安全地存储密码,但允许摘要(与数据库的salt具有不同且不断变化的临时值)进行身份验证?

据我所知,这种机制发送如下信息:

hash(nonce + hash(password + salt))

因此,在服务器上,您只需要存储
散列(密码+salt)
salt

您可能需要查看Perl模块的源代码;它管理*nix帐户。

这是我最初的想法,但为了做到这一点,我必须传输密码所用的salt。这不会影响密码的安全性吗?@cgoddard:不会。在一个设计合理的系统中,知道salt不会帮助攻击者。啊,很好,但你怎么说设计合理?我需要考虑哪些因素?@cgoddard:本质上,你需要确保每个密码都用一个唯一的salt散列,并使用“合理”的熵来生成salt。但我不是这个领域的专家,所以请不要把我的答案当作最后的决定!(事实上,我赞同标准建议:除非你是专家,否则不要使用自己的加密/安全系统。)听起来很合理。不过这应该足够了。非常感谢。