Sql server Hashbytes函数输出
我在使用MSSQL 2008 R2的Hashbytes函数时遇到了一个奇怪的情况 选择密码,Hashbytes('SHA1','sa')返回 0x3608A6D1A05ABA23EA390E5F3B48203DBB7241F7 稍后,我手动将表字段更新为此值,但是 其中Password=Hashbytes('SHA1','sa') 没有给我任何结果。我已经使用了varbinary、binary、varchar、nvarchar和char数据类型。请说明问题所在,以及我如何解决问题。谢谢。对于SHA-1,您的输出大小为“SHA和SHA1的160位(20字节)” 因此:Sql server Hashbytes函数输出,sql-server,hashbytes,Sql Server,Hashbytes,我在使用MSSQL 2008 R2的Hashbytes函数时遇到了一个奇怪的情况 选择密码,Hashbytes('SHA1','sa')返回 0x3608A6D1A05ABA23EA390E5F3B48203DBB7241F7 稍后,我手动将表字段更新为此值,但是 其中Password=Hashbytes('SHA1','sa') 没有给我任何结果。我已经使用了varbinary、binary、varchar、nvarchar和char数据类型。请说明问题所在,以及我如何解决问题。谢谢。对于SH
declare @password varbinary(19);
set @password = HASHBYTES('SHA1','sa');
if @password= HASHBYTES('SHA1','sa')
print 'yes';
else
print 'no'
返回否
,因为没有足够的空间正确存储结果;但是这个
declare @password varbinary(20);
set @password = HASHBYTES('SHA1','sa');
if @password= HASHBYTES('SHA1','sa')
print 'yes';
else
print 'no'
返回yes
。如果您的Password
字段是binary
或varbinary
并且可以容纳20个字节,则应该可以
顺便说一下,如果只指定
binary
或varbinary
,而不指定长度,则会得到1字节,这通常不是您想要的