我正在SQL中直接哈希密码:
DECLARE @HashThis nvarchar(4000);
SET @HashThis = 'SecretPizza'
INSERT into Users (UserId,Password)
Values ('CryptTest',HASHBYTES('SHA1', @HashThis))
结果:
当我尝试将SHA1
算法更改为SHA2_256
或SHA2_512
时,我收到以下错误:
问题1 - 这真的应该给我中文字符吗?
问题2 - 那些是有效的算法,为什么我不能使用它们,为什么加密设置@HashThis
为空?
答案 0 :(得分:4)
问题1:您将获得“类似中文”字符,因为您正在将HASHBYTES返回的varbinary值插入nvarchar列,因此SQL Server正在尝试将字节解释为Unicode代码点(字符)。
问题2:SQL Server 2012之前不支持 - 请参阅SQL Server 2008 R2 HASHBYTES SHA2 returns null
答案 1 :(得分:0)
首先做
从双重选择HASHBYTES('SHA2-256',@ HashThis);
看看你得到了什么..