'加密函数
Private Function Encode(Txt As String) As String
    Dim r As String, t As String
    Dim i As Long
    Dim k As Integer
    Dim j As Long
    Randomize Timer
    For i = 1 To Len(Txt)
        k = Asc(Mid(Txt, i, 1))
        r = Hex(k)
        r = String(4 - Len(r), "0") & r
        t = ""
        For j = 1 To 4
             aa = Rnd()
            k = CDec("&h" & Mid(r, j, 1)) + Int(Rnd() * 6) * 16 + 32
            t = t & Chr(k)
        Next j
        Encode = Encode & t
    Next i
End Function'解密函数
Private Function Decode(Code As String) As String
    Dim i As Long, j As Long, y As Long
    Dim k As Integer
    Dim r As String, t As String
    For i = 1 To Len(Code) Step 4
        r = Mid(Code, i, 4)
        t = ""
        For j = 1 To 4
            k = (Asc(Mid(r, j, 1)) - 32) Mod 16
            t = t & Hex(k)
        Next j
        y = CDec("&h" & t)
        If y > 32786 Then y = y - 65536
        Decode = Decode & Chr(y)
    Next i
End Function

解决方案 »

  1.   

    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;
      

  2.   

    //加密函数
    Function Encode(Txt : WideString) : WideString;
    var
        r, t : WideString;
        i : LongInt;
        k : Word;
        j : LongInt;
    begin
        Result := '';
        Randomize();
        For i := 1 To Length(Txt) do begin
            k := Word(Txt[I]);
            r := IntToHex(k,4);
            t := '';
            For j := 1 To 4 do begin
                 //aa := Random()
                k := StrToInt('$' + Copy(r, j, 1)) + Random(6) * 16 + 32;
                t := t + WideChar(k)
            end;
            Result := Result + t;
        end;
    End;//解密函数
    Function Decode(Code : WideString) : WideString;
    var
        i, j, y : LongInt;
        k : Word;
        r, t : WideString;
    begin
        I := 1;
        Result := '';
        while I < Length(Code) do begin
            r := Copy(Code, i, 4);
            t := '';
            For j := 1 To 4 do begin
                k := (Word(r[j]) - 32) Mod 16;
                t := t + IntToHex(k,1);
            end;
            y := StrToInt('$' + t);
            If y > 32786 Then y := y - 65536;
            Result := Result + WideChar(y);
            Inc(I, 4);
        end;
    End;
      

  3.   

    //加密函数
    Function Encode(Txt : WideString) : AnsiString;
    var
        r, t : AnsiString;
        i : LongInt;
        k : Word;
        j : LongInt;    str: AnsiString;
    begin
        Result := '';
        Randomize();
        For i := 1 To Length(Txt) do begin
            str := Txt[I];
            SetLength(R,Length(str) * 2);
            BinToHex(PAnsiChar(str),PAnsiChar(R),Length(str) );        r := Copy('00',1,4-Length(R))+R;
            t := '';
            For j := 1 To 4 do begin
                k := StrToInt('$' + Copy(r, j, 1)) + Random(6) * 16 + 32;
                t := t + AnsiString(Char(k));
            end;
            Result := Result + t;
        end;
    End;//解密函数
    Function Decode(Code : AnsiString) : AnsiString;
    var
        i, j : LongInt;
        y: LongWord;
        k : Word;
        r, t : AnsiString;
        C: array[0..3] of AnsiChar;
    begin
        I := 1;
        Result := '';
        while I < Length(Code) do begin
            r := Copy(Code, i, 4);
            t := '';
            For j := 1 To 4 do begin
                k := (Word(r[j]) - 32) Mod 16;
                t := t + IntToHex(k,1);
            end;
            y := Word(StrToInt('$' + t));
            HexToBin(Pointer(t),PAnsiChar(@Y),4);
            Move(y,c,SizeOf(Y));
            if C[0] = #0 then begin
              Result := Result + StrPas(PAnsiChar(@C[1]));
            end else begin
              Result := Result + StrPas(PAnsiChar(@C[0]));
            end;
            Inc(I, 4);
        end;
    End;