SQL Server验证SHA2_512哈希过程

斯蒂贝

考虑这种方法

declare @pswd nvarchar(max);
set @pswd = '2YKRCqHv';

Select 
    orig = a.Hash,
    hashA = 0x0200 + a.Salt + Hashbytes('SHA2_512', cast('2YKRCqHv' as varbinary(max)) + a.Salt),
    hashB = 0x0200 + a.Salt + Hashbytes('SHA2_512', cast(@pswd as varbinary(max)) + a.Salt)
from DB a

where 
a.Hash = 
0x0200 + a.Salt+ Hashbytes('SHA2_512', cast('2YKRCqHv' as varbinary(max)) + a.Salt)
or
a.Hash = 
0x0200 + a.Salt+ Hashbytes('SHA2_512', cast(@pswd as varbinary(max)) + a.Salt)

输出:

orig    0x0200BB316075603286E929221B9C04411AEC602A98B295CC05FCFFA809C2B553A100F4EBD4AA6FB3458E0B7C7E6D6B36FEA4908DF0AECA5142A26FA06B30F125253E15D585EE
hashA   0x0200BB316075603286E929221B9C04411AEC602A98B295CC05FCFFA809C2B553A100F4EBD4AA6FB3458E0B7C7E6D6B36FEA4908DF0AECA5142A26FA06B30F125253E15D585EE
hashB   0x0200BB316075C91147A2AEC396358C3F950C7E930B8DF0F9AC05628E00A74663502EE7BFCE68AA7BA3EC8303AE65107C72CAEF95111DD85CE45F210291B2800141CA37863A09

为什么A和B不同?以及如何创建验证密码程序?

马丁

这是因为hashACAST对aVARCHAR表示欢迎VARBINARY,而hashBCAST对aNVARCHAR表示欢迎VARBINARY

第一个是非Unicode,因此有所不同。

尝试:

declare @pswd nvarchar(max);
set @pswd = '2YKRCqHv';

Select 
    orig = a.Hash,
    hashA = 0x0200 + a.Salt + Hashbytes('SHA2_512', cast(N'2YKRCqHv' as varbinary(max)) + a.Salt),
    hashB = 0x0200 + a.Salt + Hashbytes('SHA2_512', cast(@pswd as varbinary(max)) + a.Salt)
from DB a

where 
a.Hash = 
0x0200 + a.Salt+ Hashbytes('SHA2_512', cast(N'2YKRCqHv' as varbinary(max)) + a.Salt)
or
a.Hash = 
0x0200 + a.Salt+ Hashbytes('SHA2_512', cast(@pswd as varbinary(max)) + a.Salt)

请注意N,在密码的前面加上了HashA,这会使该密码成为Unicode,然后产生相同的结果。

或者,将@pswd声明更改为使用VARCHAR,产生与相同的输出orig

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SHA2_512加密C#和SQL方法给出不同的结果

来自分类Dev

SHA2_512加密C#和SQL方法给出不同的结果

来自分类Dev

SQL Server哈希算法

来自分类Dev

验证.NET中Python Passlib生成的PBKDF2 SHA512哈希

来自分类Dev

验证.NET中Python Passlib生成的PBKDF2 SHA512哈希

来自分类Dev

在 C# 中验证 SHA512 哈希密码

来自分类Dev

如何在SQL SERVER 2016+中生成SHA-3(256)哈希

来自分类Dev

验证-如果-SQL Server

来自分类Dev

SQL Server存储过程和SQL注入

来自分类Dev

从Firebird到SQL Server的过程

来自分类Dev

SQL Server存储过程参数

来自分类Dev

SQL Server过程声明列表

来自分类Dev

sql server存储过程IN参数

来自分类Dev

执行SQL Server存储过程

来自分类Dev

SQL Server存储过程参数

来自分类Dev

SQL Server存储过程选择

来自分类Dev

从Excel运行SQL Server过程

来自分类Dev

SQL SERVER选择MAX过程

来自分类Dev

SQL Server查询中的过程

来自分类Dev

Laravel SQL Server 存储过程

来自分类Dev

SQL Server 存储过程优化

来自分类Dev

SQL Server 存储过程问题

来自分类Dev

Xamarin的Sha512哈希

来自分类Dev

在SQL Server中验证XML

来自分类Dev

SHA512在C#哈希验证中未返回相等值

来自分类Dev

SQL Server过程:在动态SQL中选择结果

来自分类Dev

单元测试SQL Server存储过程

来自分类Dev

SQL Server:存储过程语法错误

来自分类Dev

在SQL Server中使用插入存储过程