几乎相同的哈希值

k75qkfdt  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(288)

目标:
从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代码结果:
“7F83B1657FF1FC53B92DC18148A1D65DFC2D4B1FA3D677284添加D200126D9069”
sql代码的结果:
“0x7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284添加d200126d9069”
有没有好的或推荐的方法来删除数据“0x”?
谢谢您!

weylhg0b

weylhg0b1#

这应该做到:

DECLARE @HashThis varchar(32);  
SET @HashThis = CONVERT(varchar(32),'Hello World!');  
SELECT CONVERT(char(64), HASHBYTES('SHA2_256', @HashThis), 2)

但是如果你向数据库发送一个二进制文件,你应该能够将它与hashbytes的结果进行比较,而不需要任何转换。同样,如果你把它作为字节[]带到你的c应用程序。

xjreopfe

xjreopfe2#

改变 SELECT HASHBYTES('SHA2_256', @HashThis);SELECT SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('SHA2_256', @HashThis)), 3, 64) 取自convert hashbytes to varchar
正如@magnus在评论中指出的,子字符串长度应该是64。

相关问题