Я использую хешированные пароли с солью (именем пользователя).
Проблема в том, что хешированные значения C# не равны исходным значениям, которые я добавляю к базу данных с помощью сценария TSQL.
TSQL:
UPDATE [Users]
SET Password = HASHBYTES('SHA2_256', 'test123'+UPPER([UserName]))
GO;
C#:
var passBytes = new UnicodeEncoding().GetBytes(pass);
var saltBytes = new UnicodeEncoding().GetBytes(userName.ToUpper());
var dataToHash = new byte[passBytes.Length + saltBytes.Length];
Array.Copy(passBytes, dataToHash, passBytes.Length);
Array.Copy(saltBytes, dataToHash, saltBytes.Length);
var sha = new SHA256Managed();
return sha.ComputeHash(dataToHash);
Думаю, это как-то связано с кодировкой.
Но я понятия не имею, как это исправить.
Имя пользователя — varchar(50)
БД уже существует, поэтому изменить varchar будет не так просто.< /p>
Я уже пробовал:
UPDATE [Users]
SET Password = HASHBYTES('SHA2_256', N'test123'+UPPER([UserName]))
GO;
Подробнее здесь: https://stackoverflow.com/questions/192 ... l-sha2-256