home *** CD-ROM | disk | FTP | other *** search
- unit EncryptIt;
-
- interface
- USES
- Classes;
-
- function Encrypt(const S: String; Key,C1,C2: Word): String;
- function Decrypt(const S: String; Key,C1,C2: Word): String;
- procedure EncryptFile(INFName, OutFName : String; Key,C1,C2 : Word);
- procedure DecryptFile(INFName, OutFName : String; Key,C1,C2 : Word);
-
- implementation
-
- function Encrypt(const S: String; Key,C1,C2: 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,C1,C2: 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,C1,C2 : 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,C1,C2 : 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.
-