寻求一加密、解密算法:
四位整数加密成另四位整数,并能还原!!谢谢思路,代码均可!!

解决方案 »

  1.   

    Function EncryptionEngine(Src:String; Key:String; Encrypt : Boolean):string;
    var
       idx         :integer;
       KeyLen      :Integer;
       KeyPos      :Integer;
       offset      :Integer;
       dest        :string;
       SrcPos      :Integer;
       SrcAsc      :Integer;
       TmpSrcAsc   :Integer;
       Range       :Integer;begin
         KeyLen:=Length(Key);
         if KeyLen = 0 then key:='XHFJY';
         KeyPos:=0;
         SrcPos:=0;
         SrcAsc:=0;
         Range:=256;
         if Encrypt then
         begin
              Randomize;
              offset:=Random(Range);
              dest:=format('%1.2x',[offset]);
              for SrcPos := 1 to Length(Src) do
              begin
                   SrcAsc:=(Ord(Src[SrcPos]) + offset) MOD 255;
                   if KeyPos < KeyLen then KeyPos:= KeyPos + 1 else KeyPos:=1;
                   SrcAsc:= SrcAsc xor Ord(Key[KeyPos]);
                   dest:=dest + format('%1.2x',[SrcAsc]);
                   offset:=SrcAsc;
              end;
         end
         else
         begin
              offset:=StrToInt('$'+ copy(src,1,2));
              SrcPos:=3;
              repeat
                    SrcAsc:=StrToInt('$'+ copy(src,SrcPos,2));
                    if KeyPos < KeyLen Then KeyPos := KeyPos + 1 else KeyPos := 1;
                    TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);
                    if TmpSrcAsc <= offset then
                         TmpSrcAsc := 255 + TmpSrcAsc - offset
                    else
                         TmpSrcAsc := TmpSrcAsc - offset;
                    dest := dest + chr(TmpSrcAsc);
                    offset:=srcAsc;
                    SrcPos:=SrcPos + 2;
              until SrcPos >= Length(Src);
         end;
         Result:=Dest;
    end;
      

  2.   

    不好意思!
    我现在有一个这样的情况:
    我调用了一家公司的动态库,有个后遗症:
    那就是不能用length函数!:(
      

  3.   

    http://www.csdn.net/cnshare/soft/13/13920.shtm