为什么在SQL Server中,Hashbytes命令在以下代码中返回不同的响应?
Declare @Pass nvarchar
set @Pass='SampleHash'
Select HASHBYTES('MD5',@Pass)
Select HASHBYTES('MD5','SampleHash')
---------------------------------------
0x6F0AC8C187CEDB835A9BA373603BDA3F
0xC205AF5CE2048FF5C8C9A5B5ABDAF64E
---------------------------------------发布于 2018-01-26 22:05:36
通过将字符串声明为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的长度。
https://stackoverflow.com/questions/48462804
复制相似问题