テスト用の単純なテーブルがあり、HASH PASSWORDS
PWD と HASHED_PWD の 2 つの列があります。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'