嘿,在我的表中,我有一个名为
的专栏“散列” 和 “盐”
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应该从表中检索,用户输入的密码是存储过程的变量
答案 0 :(得分:0)
这取决于您的SQL Server版本。任何与2005年相同或更高的东西都将采用HashBytes程序: