加密SQL Server 2008中的密码列

时间:2011-05-04 18:29:35

标签: asp.net sql-server

我想知道如何在SQL Server 2008中加密我的密码列。我已经阅读了this文章,但我仍然不知道如何...是否有更容易理解的教程?谢谢!

3 个答案:

答案 0 :(得分:4)

通常的做法是存储密码的哈希值。像:

HASHBYTES('SHA1', convert(varbinary(32), @password))

使用哈希,您可以验证密码是否匹配,但您不知道密码本身。因此,即使黑客获得对数据库的完全访问权限,他仍然不知道密码。

有许多教程on the web

答案 1 :(得分:2)

您应该考虑存储密码哈希而不是使用加密。如果你不知道差异,哈希(也称为单向哈希)接受输入并产生gobbledygook(称为哈希),以便对于相同的输入产生相同的gobbledygook。验证通过散列用户在客户端上输入的内容并将其与数据库中的gobbledygook进行比较来进行。如果匹配,则密码相同。在没有详细说明的情况下,哈希永远不会被恢复为纯文本,这是他们的保护。然而,加密涉及创建一个密码,这样如果你有解密密钥,你可以将密码恢复为纯文本。

如果您使用的是SQL Server和ASP.NET,则应使用SqlMembershipProvider查看Forms身份验证。

Explained: Forms Authentication in ASP.NET 2.0

SqlMembershipProvider Class

An Overview of Forms Authentication

答案 2 :(得分:1)

微软通过名为

的快捷方式让这变得非常容易

FormsAuthentication.HashPasswordForStoringInConfigFile

http://www.adventuresindevelopment.com/2009/05/23/a-simple-way-to-hash-passwords-in-aspnet/