SQL Hashbytes命令输出

时间:2018-01-26 14:00:05

标签: sql-server

为什么在SQL Server中,Hashbytes命令会在以下代码中返回不同的响应?

Declare @Pass nvarchar
set @Pass='SampleHash'
Select HASHBYTES('MD5',@Pass)
Select HASHBYTES('MD5','SampleHash')

---------------------------------------
0x6F0AC8C187CEDB835A9BA373603BDA3F

0xC205AF5CE2048FF5C8C9A5B5ABDAF64E
---------------------------------------

1 个答案:

答案 0 :(得分:2)

通过将字符串声明为unicode,您将获得相同的HASHBYTES结果:

Declare @Pass nvarchar(10)
set @Pass='SampleHash'
Select HASHBYTES('MD5',@Pass)
Select HASHBYTES('MD5',N'SampleHash')

0xB8F6457C129AEBCBB0D2E3097336ED1C

或者使用varchar代替nvarchar

Declare @Pass varchar(10)
set @Pass='SampleHash'
Select HASHBYTES('MD5',@Pass)
Select HASHBYTES('MD5','SampleHash')

0xC205AF5CE2048FF5C8C9A5B5ABDAF64E

编辑:请注意,我还明确声明字符串值的长度为nvarchar(10)varchar(10),以匹配字符串SampleHash的长度。