使用T-SQL创建SimpleMember用户帐户 - 密码是如何散列的?

时间:2013-01-21 21:48:12

标签: asp.net sql-server tsql simplemembership

可以从SQL Server Management Studio创建简单成员资格用户帐户吗?

我在创建用户/帐户时找到的唯一方法是在运行应用程序时使用C#:

WebSecurity.CreateUserAndAccount("userName", "password",
                        new
                        {
                            ...
                        }, false);

有没有办法生成可以在简单成员资格中使用t-SQL的哈希密码?是否知道简单会员资格哈希密码的要求?我找到了使用DefaultMembershipProvider生成密码的其他方法,但密码与Simple Membership不兼容。

编辑: 我希望找到一个类似的过程:

declare @salt nvarchar(128)
declare @password varbinary(256)
declare @input varbinary(512)
declare @hash varchar(64)

-- Change these values (@salt should be Base64 encoded)
set @salt = N'eyhKDP858wdrYHbBmFoQ6DXzFE1FB+RDP4ULrpoZXt6f'
set @password = convert(varbinary(256),N'mypassword')

set @input = hashbytes('sha1',cast('' as  xml).value('xs:base64Binary(sql:variable(''@salt''))','varbinary(256)') + @password)
set @hash = cast('' as xml).value('xs:base64Binary(xs:hexBinary(sql:variable(''@input'')))','varchar(64)')

可用于简单会员。<​​/ p>

1 个答案:

答案 0 :(得分:2)

我认为最简单的方法是创建然后导入一个简单的.NET程序集并在Sql Server中使用它 http://msdn.microsoft.com/en-us/library/ms189876.aspx

成员资格服务使用.NET的系统和加密库的配置来生成单向哈希AFAIK,因此在t-sql中重做同样的事情并不是一件容易的事。