Я пытаюсь вычислить SHA1
хеш строки Unicode, используя T-SQL. Приведенный ниже код отлично работает со строками ASCII
:
declare @input varchar(50)
set @input = 'some text'
print 'SHA1 Hash: ' + UPPER(master.dbo.fn_varbintohexsubstring(0, HashBytes('SHA1', @input), 1, 0))
, но он вычисляет неверный хеш при замене первой строки кода на declare @input nvarchar(50)
.
Calculated hash (nvarchar): BBA91B680CE2685E9465DE24967E425CF055B10F
Calculated hash by a tool : 37AA63C77398D954473262E1A0057C1E632EDA77
Как рассчитать SHA1
хеш nvarchar
?
[EDIT]:
Ниже кода C # генерируется тот же хеш, что и для инструмента, который я использую для хеширования:
// Computes SHA1 hash of a given string
string ComputeHash(string input)
{
string result = string.Empty;
byte[] hash;
byte[] bytes = Encoding.GetBytes(input);
using (var sha = SHA1Managed.Create())
hash = sha.ComputeHash(bytes);
foreach (var b in hash)
result += b.ToString("X2");
return result;
}