Различные выходы, использующие хеш-байты

У меня есть простая таблица для тестирования HASH PASSWORDS
у меня есть 2 столбца PWD и HASHED_PWD. скажем, в PWD у меня есть пароль "111" в HASHED_PWD Я использовал этот запрос, чтобы добавить хешированный пароль "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'

1 ответ

Я нашел проблему:
Я должен использовать VARBINARY тип данных для PWD а также HASHED_PWD колонны.
и для моей переменной @hashThis также
Это то, что я сделал. Я преобразовал тип данных для обоих столбцов:

alter table Customers alter column PWD VARBinary(150)
alter table Customers alter column HashED_PWD VARBinary(150)

Затем я использовал переменную, чтобы использовать тот же пароль для теста, как показано ниже:

DECLARE @hashThis nvarchar(50);
select @hashThis ='111';
select @hashThis= CONVERT (varbinary(150),@hashThis);
set @hashThis= HASHBYTES('md5',@hashThis);
if @hashThis=(select HASHED_PWD from Customers WHERE CustomerID='cust-111')
print 'Correct'
else
print 'not Correct'

и результат Correct,

Другие вопросы по тегам