0

テスト用の単純なテーブルがあり、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'
4

1 に答える 1