Хэш C# SHA256Managed не равен TSQL SHA2_256.C#

Место общения программистов C#
Anonymous
Хэш C# SHA256Managed не равен TSQL SHA2_256.

Сообщение Anonymous »

Я использую хешированные пароли с солью (именем пользователя).

Проблема в том, что хешированные значения 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

Вернуться в «C#»