This question already has answers here:
Using HashBytes in SQL Server returns different results from DB
(3个答案)
已关闭6年。
我正在尝试将HASHBYTES与MD5算法一起使用。但是会根据数据的传递方式获得不同的结果,即
(如果使用变量 (如果传递的话)
我使用INSERT插入了数据,但是当我尝试使用STORED PROCEDURE进行检索时,未显示任何记录。
有什么我想念的吗?
TSQL md5 hash different to C# .NET md5
(3个答案)
已关闭6年。
我正在尝试将HASHBYTES与MD5算法一起使用。但是会根据数据的传递方式获得不同的结果,即
SELECT HASHBYTES('MD5', @Var)
传递)显示结果0xBEC062C01D70F0D2FC15F2E43EE3A66B SELECT HASHBYTES('MD5', 'asd123')
显示结果0xBFD59291E825B5F2BBF1EB76569F8FE7 我使用INSERT插入了数据,但是当我尝试使用STORED PROCEDURE进行检索时,未显示任何记录。
有什么我想念的吗?
最佳答案
它与字符编码有关。您的@Var
变量声明为NVARCHAR
(编码为UTF-16 Little Endian),但是字符串文字是VARCHAR
(使用与当前数据库的默认归类相关联的8位代码页进行编码),因为它没有大写前缀N
。
SELECT HASHBYTES('MD5', 'asd123') AS [VARCHAR],
HASHBYTES('MD5', N'asd123') AS [NVARCHAR];
返回值:VARCHAR NVARCHAR
---------------------------------- ----------------------------------
0xBFD59291E825B5F2BBF1EB76569F8FE7 0xBEC062C01D70F0D2FC15F2E43EE3A66B
有关详细说明,请在此处查看我的答案:TSQL md5 hash different to C# .NET md5
关于sql-server - 在SQL Server中获得HASHBYTES()方法的不同结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28438563/
10-10 13:27