database - 在 SQL Server 中使用 HashBytes 从数据库返回不同的结果

标签 database sql-server-2005

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

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

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

SELECT HASHBYTES('md5', '123456');

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

0xCE0BFD15059B68D67688884D7A3D3E8C  123456  6
0xE10ADC3949BA59ABBE56E057F20F883E

这是在 SQL Server 2005 上完成的。

在123456上查MD5的结果和网上查的第二次结果是一样的。

有什么想法吗?

谢谢!

最佳答案

你有不同的数据类型

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'

结果

varchar                             nvarchar
0xE10ADC3949BA59ABBE56E057F20F883E  0xCE0BFD15059B68D67688884D7A3D3E8C

关于database - 在 SQL Server 中使用 HashBytes 从数据库返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5614920/

相关文章:

c# - 一张表或多张表,数据只有一列发生变化

database - 使用 Elixir 选择 Postgres ltree 的直接 child

c# - 窗口服务——等待存储过程得到结果

c# - 登录失败。用户 'NT AUTHORITY\SYSTEM' 登录失败

python - 如何安全地存储加密 key ?

database - 每个 django 站点的不同数据库

sql - 使用 PK 反馈循环复制行

sql-server - 数据库丢失!寻找根本原因

sql - 在 SQL SERVER 中显示同一表中的行之间的差异

sql - 如何使用 group_concat 引用值