const  XorKey:array[0..7] of Byte=($B2,$09,$AA,$55,$93,$6D,$84,$47); //字符串加密用function Enc(Str:String):String;//字符加密函數  這是用的一個異或加密   
var  
 i,j:Integer;   
begin  
 Result:='';   
 j:=0;   
 for i:=1 to Length(Str) do  
   begin  
     Result:=Result+IntToHex(Byte(Str[i]) xor XorKey[j],2);   
     j:=(j+1) mod 8;   
   end;   
end;   
  
function Dec(Str:String):String;//字符解密函數   
var  
 i,j:Integer;   
begin  
 Result:='';   
 j:=0;   
 for i:=1 to Length(Str) div 2 do  
   begin  
     Result:=Result+Char(StrToInt('$'+Copy(Str,i*2-1,2)) xor XorKey[j]);   
     j:=(j+1) mod 8;   
   end;   
end; 

解决方案 »

  1.   


    Option Explicit
    Const XorKey As String = "B2,09,AA,55,93,6D,84,47"Private Sub Form_Load()
       Dim s1 As String, s2 As String
       s1 = "abcdefgh"
       s2 = Enc(s1)
       MsgBox s2
       s2 = Dec(s2)
       MsgBox s2
          
    End SubFunction Enc(iStr As String) As String '//字符加密函數  這是用的一個異或加密
       Dim i As Integer, j As Integer, xk() As String
       xk = Split(XorKey, ",")
       For i = 1 To Len(iStr)
           Enc = Enc + Replace(Format(Hex(Asc(Mid(iStr, i, 1)) Xor ("&H" & xk(j))), "@@"), " ", "0")
           j = (j + 1) Mod 8
       Next i
       
    End Function
      
    Function Dec(iStr As String) As String '//字符解密函數
       Dim i As Integer, j As Integer, xk() As String
       xk = Split(XorKey, ",")
       For i = 1 To Len(iStr) Step 2
        Dec = Dec + Chr(("&H" & Mid(iStr, i, 2)) Xor ("&H" & xk(j)))
        j = (j + 1) Mod 8 ';
       Next i
    End Function