我有一个简单的测试表,HASH PASSWORDS
我有 2 列 PWD 和 HASHED_PWD。假设在 PWD 中我在 HASHED_PWD 中有密码“111”,我使用此查询添加散列密码“111”:
declare @hashThis nvarchar(150);
select @hashThis = CONVERT(nvarchar(150),(SELECT PWD FROM Customers where CustomerID='cust-111'));
update Customers set HASHED_PWD=HASHBYTES('md5',@hashThis) where CustomerID='cust-111';
结果是这样的:
칮핏섛鐓鈦絣䮝ຆ
但是当我使用变量来散列“111”时:
declare @hashThis nvarchar(150);
select @hashThis = CONVERT(nvarchar(150),(SELECT PWD FROM Customers where CustomerID='cust-111'));
--update Customers set HASHED_PWD=HASHBYTES('md5',@hashThis) where CustomerID='cust-111';
select HASHBYTES('md5',@hashThis) as HASHES;
相同的查询,但结果不同。我的变量@hashThis
是:
0x6ECE4FD51BC113942692637D9D4B860E
我的列数据类型和变量相同nvarchar(150)
为什么我有不同的结果?
有任何想法吗?
我用这个查询比较,结果总是不正确
declare @pwd nvarchar(150);
declare @pwd2 nvarchar(150);
set @pwd=HASHBYTES('md5','111');
set @pwd2=(select HASHED_PWD from Customers where CustomerID='cust-111')
if @pwd=@pwd2
print 'Correct'
else
print 'not correct'