gpt4 book ai didi

sql - 在存储过程中验证密码

转载 作者:行者123 更新时间:2023-12-05 01:07:45 24 4
gpt4 key购买 nike

我在验证 SQL Server 存储过程中的帐户时遇到问题。我所做的是将用户的密码哈希字节。当他想登录他的帐户时,我再次对参数( @fPassword )进行 hashbyte 并将其与数据库中的 hashbyte 密码进行比较。问题是我不断获得不同的值(value)。

例如:

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))

最佳答案

您的变量@fPassword 是 NVARCHAR。当您对字符串进行硬编码时,它的类型为 VARCHAR。如果在字符串之前放置一个 'N',如在“N'sharingan1'”中,它们应该是等效的,因为这将字符串表示为 NVARCHAR。或者您可以使您的变量为 VARCHAR 类型。

编码很重要。

关于sql - 在存储过程中验证密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18157592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com