CREATE TABLE Users ( 
UserID Varchar(10),
UserPW Varchar (20))INSERT INTO USERS values('TestUser1',ENCRYPT('TestPW1'))
INSERT INTO USERS values('TestUser2',ENCRYPT('TestPW2'))
INSERT INTO USERS values('TestUser3',ENCRYPT('TestPW3'))
INSERT INTO USERS values('TestUser4',ENCRYPT('TestPW4'))SELECT * from Users where UserID = 'TestUser2' 
and UserPW = ENCRYPT('TestPW2')--不区分大小写
INSERT INTO USERS values('TestUser1',ENCRYPT(UPPER('TestPW1')))

解决方案 »

  1.   

    select pwdcompare('1234', password, (CASE WHEN xstatus&2048 = 2048 THEN 1 ELSE 0 END)) a,name
    from master.dbo.sysxlogins
    --SQL SERVER 本身也提代加密密码的函数:
    --pwdencrypt ,pwdcompare
    --加密:
    declare @logintable table(username varchar(20),passwd varbinary(256))
    insert @logintable(username,passwd) values('yourname',pwdencrypt('123456'))declare @pwd varbinary(256)select @pwd=passwd from @logintable where username='yourname'
    --比较:
    if pwdcompare('12356',@pwd)=1
    print 'true'
    else 
    print 'false'select * from @logintable
    or
    CREATE PROCEDURE sp_pwd(@userid char(4),@old char(30),@new char(30)) 
      with recompile,encryption
     AS
    declare @tt0 int,@tt1 int,@tt2 int,@tt3 varchar(30),@ttkey int
    declare @role tinyintselect @tt1=1
    select @tt2=0
    select @tt0=len(@userid)
    while @tt1<=@tt0
    begin
        select @tt2=@tt2+ascii(substring(@userid,@tt1,1))
        select @tt1=@tt1+1
    endselect @ttkey=convert(int,(@tt2/@tt0))
    select @tt3=''
    select @tt0=len(@new)select @tt1=1
    while @tt1<=@tt0
    begin
        select @tt2=ascii(substring(@new,@tt1,1))^(@ttkey+@tt1)
        if char(@tt2)="'"
            select @tt3=@tt3+'$'
        else
            begin     
                select @tt3=@tt3+char(@tt2)
            end
        select @tt1=@tt1+1
    end

    update login set password=rtrim(ltrim(@tt3)) where code=@userid

    if @@trancount>0
            commit tran
      

  2.   

    同意: jimzj(云) ( 
    我用VB,就是这样做的。