home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 9 / CDACTUAL9.iso / share / Dos / VARIOS / pascal / SWAG9605.DDD / 0069_Encryption-Decryption.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1996-05-31  |  1.3 KB  |  80 lines

  1. {
  2. I give you a simple encrypting/decrypting algoritm (it's easy to decrypt
  3.  
  4. it with a descent program). }
  5.  
  6. Procedure Encrypt(Var Data; Length: Word; Key: Byte);
  7.  
  8. Var B: Byte;
  9.     i: Word;
  10.  
  11. Begin
  12.  
  13.   For i := 0 to Length-1 do
  14.     Begin
  15.       B := Mem[Seg(Data):Ofs(Data)+i];
  16.       B := 255 - (B + Key);
  17.       Mem[Seg(Data):Ofs(Data)+i] := B;
  18.      end; { For }
  19.  
  20. end;
  21.  
  22. If You like assembler:
  23.  
  24.  
  25.  
  26. Procedure Encrypt(Var Data; Length: Word; Key: Byte); ASSEMBLER;
  27.  
  28. ASM
  29.   MOV  CX,Length
  30.   DEC  CX
  31.   MOV  BL,Key
  32.   LES  DI,Data
  33. @@Loop1:
  34.   MOV  AL,BYTE PTR ES:[DI]
  35.   MOV  BH,AL
  36.   ADD  BH,BL
  37.   MOV  AL,255
  38.   SUB  AL,BH
  39.   MOV  BYTE PTR ES:[DI],AL
  40.   INC  DI
  41.   LOOP @@Loop1
  42. end;
  43.  
  44. Procedure Decrypt(Var Data; Length: Word; Key: Byte);
  45.  
  46. Var i: Word;
  47.     B: Byte;
  48.  
  49. Begin
  50.  
  51.   For i := 0 to Length-1 do
  52.     Begin
  53.       B := Mem[Seg(Data):Ofs(Data)+i];
  54.       B := 255 - B + Key;
  55.       Mem[Seg(Data):Ofs(Data)+i];
  56.     end;{ For }
  57. end;
  58.  
  59. Or:
  60.  
  61. Procedure Decrypt(Var Data; Length: Word; Key: Byte); ASSEMBLER;
  62. ASM
  63.   MOV   CX,Length
  64.   DEC   CX
  65.   MOV   BL,Key
  66.   LES   DI,Data
  67. @@Loop1:
  68.   MOV   AL,BYTE PTR ES:[DI]
  69.   MOV   BH,AL
  70.   ADD   BH,BL
  71.   MOV   AL,255
  72.   SUB   AL,BH
  73.   MOV   BYTE PTR ES:[DI],AL
  74.   INC   DI
  75.   LOOP  @@Loop1
  76. end;
  77.  
  78. { Key in the procedure Encrypt and Decrypt should be the same. }
  79.  
  80.