SQL 中的相同输入,散列给出不同的结果
Hashing Gives Different Results for the Same Input in SQL
我是加密新手。我搜索了很多但找不到答案。
当我使用下面的查询时
SELECT UserName, HASHBYTES('MD5', 'trial1') [HashedPasswd] from accounts
我得到以下结果作为加密。
0x237103B50B9AA3496711E628FA073D6F
但是,当我使用下面的查询时,密码列的值正好是 trial1
SELECT UserName, HASHBYTES('MD5', Password) [HashedPasswd] from accounts
我明白了
0x75E7A2E4F2A571D10FB8B042E4586376
可能是什么原因?
那是因为“密码”是一个 unicode 列(可能是 NVARCHAR)而 'trial1' 不是一个 unicode 字符串。
您可以通过在字符串前面添加“N”来告诉 SQL 服务器 'trial1' 是一个 unicode 字符串。
如果您 运行 此查询,您将获得与“密码”列相同的哈希值。
SELECT UserName, HASHBYTES('MD5', N'trial1') [HashedPasswd] from accounts
我是加密新手。我搜索了很多但找不到答案。
当我使用下面的查询时
SELECT UserName, HASHBYTES('MD5', 'trial1') [HashedPasswd] from accounts
我得到以下结果作为加密。
0x237103B50B9AA3496711E628FA073D6F
但是,当我使用下面的查询时,密码列的值正好是 trial1
SELECT UserName, HASHBYTES('MD5', Password) [HashedPasswd] from accounts
我明白了
0x75E7A2E4F2A571D10FB8B042E4586376
可能是什么原因?
那是因为“密码”是一个 unicode 列(可能是 NVARCHAR)而 'trial1' 不是一个 unicode 字符串。
您可以通过在字符串前面添加“N”来告诉 SQL 服务器 'trial1' 是一个 unicode 字符串。
如果您 运行 此查询,您将获得与“密码”列相同的哈希值。
SELECT UserName, HASHBYTES('MD5', N'trial1') [HashedPasswd] from accounts