2015-02-10 75 views
2

我正在尝试使用带有MD5算法的HASHBYTES。但得到取决于如何将数据即通过不同的结果,在SQL Server中为HASHBYTES()方法获取不同的结果

  1. 如果使用可变SELECT HASHBYTES('MD5', @Var)通过示出了结果0xBEC062C01D70F0D2FC15F2E43EE3A66B

  2. 如果通过照片直接SELECT HASHBYTES('MD5', 'asd123')示出了结果0xBFD59291E825B5F2BBF1EB76569F8FE7

我使用INSERT插入数据,但是当我尝试使用我的存储过程进行检索时,没有记录显示。

有什么我失踪了吗?

回答

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

+1

谢谢!这真的解决了我的问题... – 2015-02-10 18:11:37

相关问题