我正在尝试SHA1
使用 T-SQL 计算 unicode 字符串的哈希值。下面的代码适用于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
a 的哈希值nvarchar
?
[编辑]:
下面的 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;
}