在SQL Server中使用HashBytes会返回DB的不同结果

Jon*_*tan 1 database sql-server-2005

我尝试在某个值上计算md5哈希值,但是得到了一个奇怪的结果.

我以两种不同的方式运行它:

SELECT HASHBYTES('md5',ZLA_PASSWORD),ZLA_PASSWORD, len(ZLA_PASSWORD) FROM ZLA_PASSWORD;

SELECT HASHBYTES('md5', '123456');
Run Code Online (Sandbox Code Playgroud)

我得到两个不同的结果,其中只有第二个有效:

0xCE0BFD15059B68D67688884D7A3D3E8C  123456  6
0xE10ADC3949BA59ABBE56E057F20F883E
Run Code Online (Sandbox Code Playgroud)

这是在SQL Server 2005上完成的.

在123456上检查MD5的结果与在线检查第二个结果相同.

有任何想法吗?

谢谢!

Mik*_*son 6

您有不同的数据类型

declare @str1 as varchar(10)
declare @str2 as nvarchar(10)

set @str1 = '123456'
set @str2 = '123456'

select
  hashbytes('md5', @str1) as 'varchar',
  hashbytes('md5', @str2) as 'nvarchar'
Run Code Online (Sandbox Code Playgroud)

结果

varchar                             nvarchar
0xE10ADC3949BA59ABBE56E057F20F883E  0xCE0BFD15059B68D67688884D7A3D3E8C
Run Code Online (Sandbox Code Playgroud)