谢谢,楼上的。
但是为什么用select pwdencrypt('1')每次得到的都不一样呢.怎么
对比也不行呀,该怎么解决?

解决方案 »

  1.   

    --这样------
    declare @t table(name varchar(10),pwd varbinary(256))
    insert @t values('u1',pwdencrypt('1234567'))
    --select * from @t
    declare @int int
    select @int=pwdcompare('1234567',(select pwd from @t),0)
    begin
    if @int=1
    print '你输入的密码正确!'
    else
    print '你输入的密码错误!'
    end
      

  2.   

    --或者在前台判断
    --处理方式:
    --用DES,3DES,MD5 等方式加密后,密码存储在数据库中,
    --用户验证的时候,再把用户输入的密码加密,直接和数据库加密后存储的字符比较
    --相等,允许登录,不相等,拒绝登录--注意:MD5是不可逆的。所以用户看到数据库中存储的字符串,也不知道他的用户密码是多少!
      

  3.   

    declare @pwdsave varbinary(256)
    set @pwdsave=pwdencrypt('abc')   -- 设置密码(加密)if pwdcompare('abc', @pwdsave, 0) =1   -- 判断输入的密码是否与设置的密码一样
    print 'password "abc" ok'if pwdcompare('Abcd', @pwdsave, 0) =1   -- 判断输入的密码是否与设置的密码一样
    print 'password "Abcd" ok'
      

  4.   

    "为什么用select pwdencrypt('1')每次得到的都不一样呢"如果一样, 加密就没有什么意义了, 例如, 我是A用户, 我要获取B用户的权限, 我只需要把我的密码(通过pwdencrypt加密后的)替换掉B用户的, 就可以用我的密码登陆B用户.