SQL Server:如何在存储过程中创建HashPassword

时间:2011-07-27 15:01:33

标签: sql sql-server sql-server-2008

嘿,在我的表中,我有一个名为

的专栏

“散列” 和 “盐”

hash是用户输入的字符串和salt

的Hashpassword

和盐是单盐值

在用户登录期间而不是从DB中检索盐,在我的代码中创建hashpasword然后在DB中与hash进行比较我被告知我可以在我的存储过程中直接执行此操作。

这是我目前的存储过程

ALTER PROCEDURE [dbo].[spCheckMemberLogin]
(
    @username VARCHAR(100) = default,
    @hash VARCHAR(100) = default
)
AS
BEGIN

    SET NOCOUNT ON;

    SELECT
         3 as result
    ,    * 
    FROM
        web_user 
    WHERE 
        (statusId = 1) 
        AND (useremail = @username) 
        AND (hash = @hash)

END

而不是拥有 hash = @hash

我怎么能

hash = HashBytes('SHA1',salt +用户输入的密码)

其中salt应该从表中检索,用户输入的密码是存储过程的变量

1 个答案:

答案 0 :(得分:0)

这取决于您的SQL Server版本。任何与2005年相同或更高的东西都将采用HashBytes程序:

http://msdn.microsoft.com/en-us/library/ms174415.aspx