declare @pass varchar(100)
declare @password binary(100)
set @pass='abcdefg'set @password=convert(binary,@pass)set @pass=convert(varchar(100),@password)print @password
print @pass

解决方案 »

  1.   

    加密 select @password = convert(varbinary(256), pwdencrypt(‘1234’))
    解密 pwdcompare(@password, Staff_Password) = 1  0,不对,1对
      

  2.   

    用convert将字符型转换成binary类型
      

  3.   

    补充:如果需要,可以在SQL中加密(pwdencrypt)并校验用户输入的密码是否正确(pwdcompare)
    这两个系统函数没有被公开,所以你在帮助里看不到,但是可以在系统的存储过程里找到
      

  4.   

    pwdencrypt
    pwdcompare
    ----------
    没听说过,也没找到
      

  5.   

    TO——》yesyesyes打开master数据库
    双击sp_addlogin
    查看代码!
      

  6.   

    goregrypeck(派克) 
    你真N,PFPF
      

  7.   

    goregrypeck(派克) 
    第一个我用对了,但第二个PWDCOMPAR我怎么不会用
    能用PWDCOMPAR输出个直,我来严正密码正确与否!
      

  8.   

    select pwdencrypt('abcd')  --加密
    select pwdcompare('abcd',pwdencrypt('abcd')) --比较,返回1相等,0则反之。但是如果你忘记了密码那就有点晕了,pwdencrypt('abcd') 只能加密,但pwdcompare只能比较.
    如果忘了密码,拿什么比较呢.建议还是用邹建的自定义函数吧.
      

  9.   

    --邹建的函数,原帖在哪不知道了。
    create function f_jmstr(@str varchar(8000),@pwdstr varchar(8000))
    returns varchar(8000)
    As
    begin
    declare @re varchar(8000)
    declare @i int
    select @i=len(@str),@re=''
    while len(@pwdstr)<@i
    set @pwdstr=@pwdstr+'123'+@pwdstr
    while @i>0
    select @re=
    nchar(unicode(substring(@str,@i,1))^unicode(substring(@pwdstr,@i,1)))
    +@re
    ,@i=@i-1
    return(@re)
    end
    go
    ----------------------------------------调用举例-----------------------------
    select dbo.f_jmstr('ework','aaaa') --把ework用aaaa来加密
    select dbo.f_jmstr(dbo.f_jmstr('ework','aaaa'),'aaaa')--把 加密后的字符用aaaa
    来解密