【问题标题】:Validate password in stored procedure在存储过程中验证密码
【发布时间】:2013-08-10 00:49:43
【问题描述】:

我在验证 SQL Server 存储过程中的帐户时遇到问题。我所做的是,我 Hashbyte 用户的密码。当他想登录他的帐户时,我再次对参数(@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 替换为'sharingan1' 时,我得到'c'(这就是我想要的)。

有人知道为什么

(CONVERT(NVARCHAR(4000), HASHBYTES('sha1', @fPassword), 1)) 

我设置的@fPassword = 'sharingan1' 不同于

(CONVERT(NVARCHAR(4000), HASHBYTES('sha1', 'sharingan1'), 1))

【问题讨论】:

    标签: sql sql-server-2008 stored-procedures passwords


    【解决方案1】:

    您的变量 @fPassword 是 NVARCHAR。当您对字符串进行硬编码时,它的类型为 VARCHAR。如果你在字符串前面加上一个'N',比如“N'sharingan1'”,它们应该是等价的,因为这将字符串表示为一个 NVARCHAR。或者您可以将变量设为 VARCHAR 类型。

    编码很重要。

    【讨论】:

    • 酷!很高兴我能提供帮助。
    猜你喜欢
    • 2012-11-29
    • 2014-10-20
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 2016-02-15
    相关资源
    最近更新 更多