在SQL Server中获取HASHBYTES()方法的不同结果

时间:2015-02-10 17:59:02

标签: sql-server database

我正在尝试将HASHBYTES与MD5算法一起使用。但是根据数据的传递方式得到不同的结果,即

  1. 如果使用变量SELECT HASHBYTES('MD5', @Var)传递,则显示结果0xBEC062C01D70F0D2FC15F2E43EE3A66B

  2. 如果通过direclty SELECT HASHBYTES('MD5', 'asd123')显示结果0xBFD59291E825B5F2BBF1EB76569F8FE7

  3. 我使用INSERT插入数据但是当我尝试使用我的STORED PROCEDURE检索时,没有显示任何记录。

    我有什么遗失的吗?

1 个答案:

答案 0 :(得分:2)

它与角色编码有关。您的@VarNVARCHAR,但字符串文字为VARCHAR,因为它没有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