Contributor: UNKNOWN

{
I give you a simple encrypting/decrypting algoritm (it's easy to decrypt

it with a descent program). }

Procedure Encrypt(Var Data; Length: Word; Key: Byte);

Var B: Byte;
    i: Word;

Begin

  For i := 0 to Length-1 do
    Begin
      B := Mem[Seg(Data):Ofs(Data)+i];
      B := 255 - (B + Key);
      Mem[Seg(Data):Ofs(Data)+i] := B;
     end; { For }

end;

If You like assembler:



Procedure Encrypt(Var Data; Length: Word; Key: Byte); ASSEMBLER;

ASM
  MOV  CX,Length
  DEC  CX
  MOV  BL,Key
  LES  DI,Data
@@Loop1:
  MOV  AL,BYTE PTR ES:[DI]
  MOV  BH,AL
  ADD  BH,BL
  MOV  AL,255
  SUB  AL,BH
  MOV  BYTE PTR ES:[DI],AL
  INC  DI
  LOOP @@Loop1
end;

Procedure Decrypt(Var Data; Length: Word; Key: Byte);

Var i: Word;
    B: Byte;

Begin

  For i := 0 to Length-1 do
    Begin
      B := Mem[Seg(Data):Ofs(Data)+i];
      B := 255 - B + Key;
      Mem[Seg(Data):Ofs(Data)+i];
    end;{ For }
end;

Or:

Procedure Decrypt(Var Data; Length: Word; Key: Byte); ASSEMBLER;
ASM
  MOV   CX,Length
  DEC   CX
  MOV   BL,Key
  LES   DI,Data
@@Loop1:
  MOV   AL,BYTE PTR ES:[DI]
  MOV   BH,AL
  ADD   BH,BL
  MOV   AL,255
  SUB   AL,BH
  MOV   BYTE PTR ES:[DI],AL
  INC   DI
  LOOP  @@Loop1
end;

{ Key in the procedure Encrypt and Decrypt should be the same. }