EncryptIt.pas


encryptit.pas
unit EncryptIt;  interface USES     Classes; const      C1 = 52845;      C2 = 22719;  function Encrypt(const S: String; Key: Word): String; function Decrypt(const S: String; Key: Word): String; procedure EncryptFile(INFName, OutFName : String; Key : Word); procedure DecryptFile(INFName, OutFName : String; Key : Word);  implementation  function Encrypt(const S: String; Key: Word): String; var    I: Integer; begin   Result := S;   for I := 1 to Length(S) do       begin            Result[I] := char(byte(S[I]) xor (Key shr 8));            Key := (byte(Result[I]) + Key) * C1 + C2;       end;   end;  function Decrypt(const S: String; Key: Word): String; var    I: Integer; begin   Result := S;   for I := 1 to Length(S) do       begin            Result[I] := char(byte(S[I]) xor (Key shr 8));            Key := (byte(S[I]) + Key) * C1 + C2;       end;   end;   procedure EncryptFile(INFName, OutFName : String; Key : Word); VAR    MS, SS : TMemoryStream;    X : Integer;    C : Byte; begin MS := TMemoryStream.Create; SS := TMemoryStream.Create;     TRY        MS.LoadFromFile(INFName);        MS.Position := 0;        FOR X := 0 TO MS.Size - 1 DO              begin                   MS.Read(C, 1);                   C := (C xor (Key shr 8));                   Key := (C + Key) * C1 + C2;                   SS.Write(C,1);              end;        SS.SaveToFile(OutFName);     FINALLY            SS.Free;            MS.Free;     end; end;  procedure DecryptFile(INFName, OutFName : String; Key : Word); VAR    MS, SS : TMemoryStream;    X : Integer;    C, O : Byte; begin MS := TMemoryStream.Create; SS := TMemoryStream.Create;     TRY        MS.LoadFromFile(INFName);        MS.Position := 0;        FOR X := 0 TO MS.Size - 1 DO              begin                   MS.Read(C, 1);                   O := C;                   C := (C xor (Key shr 8));                   Key := (O + Key) * C1 + C2;                   SS.Write(C,1);              end;        SS.SaveToFile(OutFName);     FINALLY            SS.Free;            MS.Free;     end; end;  end. 

联系电话:
020-00000000
联系电话:
020-00000000
联系电话:
020-12345678