Хэш-функция C# и хэш-функция сервера SQL, та же реализация?
Я хочу иметь как на уровне C#, так и на уровне SQL Server 2012.
Как узнать, даст ли реализация SHA1 те же результаты?
В SQL Server я делаю:
HASHBYTES('SHA1', @data)
Я еще не написал свою функцию C#.
Я просто волнуюсь, если они не выдают одинаковое значение хеша, я получу некоторые несоответствия в моем приложении.
Примечание. Для создания хэша я буду использовать столбцы datetime, nvarchar и int. Я должен преобразовать их в строки правильно?
1 ответ
У вас не будет проблем с использованием этого кода:
public static byte[] GetHash(string inputString)
{
HashAlgorithm algorithm = SHA1.Create();
return algorithm.ComputeHash(Encoding.Unicode.GetBytes(inputString));
}
Он создает тот же хеш, который вы можете создать на SQL Server:
HASHBYTES('SHA1', CAST(@data AS NVARCHAR(100)))