Contributor: ANDREW EIGUS

{
   Here are two routines: one - encrypts, other - decrypts any data passed.
   They are very simple so if a real hacker will debug your program, he will
   the way the password is encrypted. However, for eye-protection it's really
}
USES Crt;

Procedure EncodeBuf(var Buffer; Count : word); assembler;
   { Encrypts Count bytes of data in a Buffer variable }
   Asm
     PUSH DS
     LDS SI,Buffer
     LES DI,Buffer
     CLD
     MOV CX,Count
     OR  CX,0
     JZ  @@2
   @@1:
     LODSB
     XOR AL,2
     ROR AL,1
     NOT AL
     STOSB
     LOOP @@1
   @@2:
     POP DS
   End; { EncodeBuf }

Procedure DecodeBuf(var Buffer; Count : word); assembler;
   { Decrypts Count bytes of data from a Buffer variable }
   Asm
     PUSH DS
     LDS SI,Buffer
     LES DI,Buffer
     CLD
     MOV CX,Count
     OR  CX,0
     JZ  @@2
   @@1:
     LODSB
     NOT AL
     ROL AL,1
     XOR AL,2
     STOSB
     LOOP @@1
   @@2:
     POP DS
   End; { DecodeBuf }

var Password : string;

 Begin
     Write('Enter your password to be encrypted: ');
     ReadLn(Password);
     EncodeBuf(Password[1], Length(Password));
     WriteLn;
     WriteLn('Encrypted password: ', Password);
     DecodeBuf(Password[1], Length(Password));
     WriteLn('Decrypted password: ', Password)
   End.