Discuz! Passport 通行证整合(4)


'=====================================================
'============仿discuz passport解码函数================
'=====================================================
function passport_decrypt(txt, key)
                Dim txt_ary,tmp,i               
                txt = passport_key(base64Decode(strUnicode2Ansi(txt)), key)
                txt_ary = AnsiToAry(txt)
        ' 变量初始化
                tmp = ""
        for i = 0 To lenb(txt)-1
                  tmp = tmp & mxor(txt_ary(i),txt_ary(i+1))
                  i=i+1
                next
                passport_decrypt = strAnsi2Unicode(tmp)
end function 

'=====================================================
'==========仿discuz Passport 密匙处理函数=============
'=====================================================
function passport_key(ansitxt, encrypt_key)
                dim encrypt_key_tmp,encrypt_key_ary,txt_ary
                dim ctr,tmp,i
                encrypt_key_tmp = md5(encrypt_key,32)               
        encrypt_key_ary=StrToAry(encrypt_key_tmp)               
                txt_ary=AnsiToAry(ansitxt)                
                ctr = 0
        tmp = ""                  
        for i=0 to lenb(ansitxt)-1                       
                    if ctr=len(encrypt_key_tmp) then ctr=0 else ctr=ctr
            tmp= tmp & mxor(txt_ary(i),encrypt_key_ary(ctr))
            ctr=ctr+1
        next
                passport_key=tmp               
end function

'=====================================================
'=================将字符串转换为Ansi数组==============
'=====================================================
function StrToAry(str)
   dim ary(),length,tmpstr,i
   tmpstr=strUnicode2Ansi(str)
   length=lenb(tmpstr)  
   redim ary(length)  
   for i=0 to length-1                                    
                ary(i)=midb(tmpstr,i+1,1)               
   next 
   StrToAry=ary
end function

'=====================================================
'=================将Ansi字符串转换为Ansi数组==========
'=====================================================
function AnsiToAry(str)
   dim ary(),length,i
   length=lenb(str)  
   redim ary(length)  
   for i=0 to length-1                                    
                ary(i)=midb(str,i+1,1)               
   next 
   AnsiToAry=ary
end function

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/a6b433df30aff4795dbf0d07a5abf20e.html