我在验证 SQL Server 存储过程中的帐户时遇到问题。我所做的是我对用户的密码进行哈希处理。当他想登录他的帐户时,我再次对参数(@fPassword
)进行哈希处理,并将其与数据库中的哈希字节密码进行比较。问题是我不断得到不同的价值。
例如:
declare @fPassword nvarchar(4000)
set @fPassword = 'sharingan1'
IF (CONVERT(NVARCHAR(4000), HASHBYTES('sha1', @fPassword), 1)) <> (select fPassword from CustomerTable WHERE fUserName = 'cesark14')
BEGIN
print 'b'
END
else
print 'c'
我不断得到'b'
。但是当我替换@fPassword
for时'sharingan1'
,我得到'c'
了(这就是我想要的)。
有谁知道为什么是
(CONVERT(NVARCHAR(4000), HASHBYTES('sha1', @fPassword), 1))
我设置的地方@fPassword = 'sharingan1'
不同于
(CONVERT(NVARCHAR(4000), HASHBYTES('sha1', 'sharingan1'), 1))