我有一个表,其中userpassword字段有varbinary数据类型,所以我很困惑,在哪种形式应该保存数据到userpassword字段,因为当我保存varchar数据它给我错误.
解决方法
一个varbinary列可以存储任何东西.要在其中存储字符串,您必须将其转换为varbinary:
declare @t table (id int identity,pwd varbinary(50)) insert into @t (pwd) values (cast('secret' as varbinary(50)))
但是对于密码,varbinary列通常存储某种哈希值.例如,使用HashBytes
function的SHA1哈希:@H_301_9@
insert into @t (pwd) values (HashBytes('sha1','secret'));
存储单向散列而不是真正的密码更安全.您可以检查密码是否匹配:@H_301_9@
select * from @t where pwd = HashBytes('sha1','secret')