我正在使用 SHA256 来获取散列的十六进制字符串。使用常规字符时它工作正常,但是当要散列的字符串包含重音/变音符号时,我在 C# 和 T-SQL 中得到不同的结果。我更愿意在 SQL Server 端进行更改。
- 匹配的示例词:鸟
- 不匹配的示例词:MUÑOZ
C#
using (SHA256 sha2 = SHA256.Create())
{
var hash = sha2.ComputeHash(Encoding.UTF8.GetBytes(fullAddress));
string hexString = string.Empty;
for (int i = 0; i < hash.Length; i++)
{
hexString += hash[i].ToString("X2"); //Convert the byte to Hexadecimal representation, Notice that we use "X2" instead of "X"
}
sha2.Dispose();
return hexString;
}
SQL
declare @fullAddress nvarchar(500)
set @fullAddress = 'MUÑOZ'
select CONVERT([varchar](256), HASHBYTES('SHA2_256', @fullAddress), 2)