Fra*_*dal 18 sql sql-server types varbinary
我有一个表,其中userpassword字段有varbinary数据类型,所以我很困惑,我应该以哪种形式将数据保存到userpassword字段,因为当我保存varchar数据时,它给了我错误.
And*_*mar 25
一varbinary列可以存储任何东西.要在其中存储字符串,您必须将其强制转换为varbinary:
declare @t table (id int identity, pwd varbinary(50))
insert into @t (pwd) values (cast('secret' as varbinary(50)))
Run Code Online (Sandbox Code Playgroud)
但是对于密码,varbinary列通常存储某种哈希值.例如,使用该HashBytes函数的SHA1哈希:
insert into @t (pwd) values (HashBytes('sha1', 'secret'));
Run Code Online (Sandbox Code Playgroud)
存储单向哈希而不是真实密码更安全.您可以检查密码是否匹配:
select * from @t where pwd = HashBytes('sha1', 'secret')
Run Code Online (Sandbox Code Playgroud)
但是你无法通过查看表来检索密码.因此,只有最终用户知道他的密码,甚至DBA都无法检索它.