我的C#代码产生与在线哈希计算器相同的哈希值,以及我的旧基本库和其他代码:
var sha256 = SHA256.Create();
var hashed = sha256.ComputeHash(Encoding.UTF8.GetBytes(_checksum));
_checksum = BitConverter.ToString(hashed).Replace("-", "").ToLower();
例如,
"test" -> "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
如果我使用
,我必须直接从SQL Server命令重现相同的哈希SELECT master.dbo.fn_varbintohexsubstring(0, HashBytes('SHA2_256', 'test'), 1, 0)
=> "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
但是如果我尝试使用其中一个列,则会产生不同的结果:
SELECT master.dbo.fn_varbintohexsubstring(0, HashBytes('SHA2_256', t.sMANAGER), 1, 0)
FROM EV_AGENCY t
=> "fe520676b1a1d93dabab2319eea03674f3632eaeeb163d1e88244f5eb1de10eb"
该列为nvarchar
,整理为French_CI_AI
。
我认为我必须正确地投射我的专栏,所以我尝试施放,转换等没有成功。
有人可以帮我吗?
谢谢!