2011-09-29 54 views
1

我有一个ASP.NET(MVC 3)网站,用户将能够登录来执行某些操作。我需要将他们的密码存储在后端SQL Server 2008数据库中。我将使用表单身份验证(而不是Windows身份验证)。我只是想知道在数据库中存储密码的最佳方式是什么。阅读一些链接,如this,我倾向于使用哈希盐,但我不清楚如何存储盐值?盐值应该加密吗?任何人在结束这种方法之前都有其他想法,最佳实践,潜在问题或关键考虑因素?使用含盐的散列在数据库中存储密码;不知道在哪里/如何存储盐

回答

1

盐通常存储为散列的一部分,有时会作为前两个字节存储。如有必要,它可以作为单独的字段存储,特别是当盐较长时。盐不需要加密。您只需将salt + hash存储在合理安全(仅限管理访问权限)的位置。

不要有史以来存储实际的密码。你只需要salt和hash。当用户提供密码时,您使用他们声称的用户的存储盐进行加密,如果结果与存储的哈希匹配,则密码是正确的。

关于这个问题的好文章:http://www.obviex.com/samples/hash.aspx

1

一个典型的方法是将盐和散列一起,通过一些特殊的字符分隔。该值由身份验证机制创建并可传递给身份验证机制进行验证,以便应用程序本身不必知道该值同时包含盐和哈希。

盐没有被加密存储。

相关问题