散列密码,SQL(Hashing password into SQL)

2019-10-17 02:06发布

我直接在散列SQL口令是这样的:

DECLARE @HashThis nvarchar(4000);
SET @HashThis = 'SecretPizza'

INSERT into Users (UserId,Password)
Values ('CryptTest',HASHBYTES('SHA1', @HashThis))

结果:

当我尝试和改变SHA1算法SHA2_256SHA2_512我收到以下错误:

问题1 -这是真的应该给我中国人喜欢的字符?
问题2 -这些都是有效的算法,那么怎么来的,我不能使用它们,为什么加密设置@HashThis为空?

Answer 1:

问题1:你获得“中国人喜欢”字,因为你将通过HASHBYTES返回到一个nvarchar列VARBINARY值,所以SQL Server正在试图解释字节为Unicode代码点(字符)。

问题2:SQL Server 2012中之前不支持-参见SQL Server 2008 R2的HASHBYTES SHA2返回null



Answer 2:

首先做

选择从双HASHBYTES( 'SHA2-256',@HashThis);

看看你会得到什么..



文章来源: Hashing password into SQL