【发布时间】:2020-11-04 22:13:46
【问题描述】:
目标:
从 SQL 和 C# 代码中检索相同的哈希值。
问题:
哈希值几乎相同。我正在使用相同的哈希和 sha。
输入:
“你好,世界!”
C#代码:
https://dotnetfiddle.net/2YbFXY
SQL 代码:
DECLARE @HashThis varchar(32);
SET @HashThis = CONVERT(varchar(32),'Hello World!');
SELECT HASHBYTES('SHA2_256', @HashThis);
输出:
C#代码结果:
“7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069”
SQL 代码结果:
“0x7F83B1657FF1FC53B92DC18148A1D65DFC2D4B1FA3D677284ADDD200126D9069”
有没有好的或推荐的方法来删除数据“0x”?
谢谢!
【问题讨论】:
-
this 有帮助吗?否则,您可以使用
StartsWith检测散列中的0x并删除前两个字符。 -
你可以说哈希码是一样的,只是表示不同。删除 0x 和小写使其适合比较。
-
哈希值相同,格式不同。 hash 无论如何都不是字符串,而是二进制值。如果要存储和比较实际的哈希值,请不要将它们格式化为字符串
-
您必须将哈希值转换为字符串吗?真正的哈希值是 C# 代码中的 byte[]
data变量和HASHBYTES返回的二进制值