PROGRAM CYPTO;
USES
  TURBO3;
CONST
   MAXINBUFFER = 16384;
VAR
   BUFFER                 : ARRAY[1..MAXINBUFFER] OF BYTE;
   I, KEYLEN, ACTUALREAD  : INTEGER;
   INPUTFILE              : FILE;
   INPUTFILENAME,KEY      : STRING[255];
BEGIN   (* MAIN PROGRAM *)
   IF PARAMCOUNT < 2 THEN
      BEGIN
         WRITELN('SYNTAX: CRYPTO <Filename> <Keyword>');
         WRITELN('KEYWORK CAN BE A PHRASE--AS MANY WORDS AS YOU CAN FIT.');
         WRITELN('E.G. "CRYPTO ALLICE.DAT JEST THE PLACE FOR A SNARK" ');
         HALT;
      END;

   INPUTFILENAME :=PARAMSTR(1);
   ASSIGN(INPUTFILE, INPUTFILENAME);
   {$I-} RESET(INPUTFILE, 1); {$I-}
   IF IORESULT <> 0 THEN
      BEGIN
         WRITELN (#7, 'FILE ',INPUTFILENAME, 'DOES NOT EXIT!');
         HALT;
      END;

   KEY:='';
   FOR I := 2 TO PARAMCOUNT DO
      KEY:= KEY + PARAMSTR(I);

   KEYLEN :=LENGTH(KEY);
   REPEAT
      BLOCKREAD(INPUTFILE, BUFFER, MAXINBUFFER,ACTUALREAD);
      FOR I:= 1 TO ACTUALREAD DO
         BUFFER [I] := BUFFER [I] XOR ORD(KEY[SUCC(PRED(I) MOD KEYLEN)]);
      LONGSEEK(INPUTFILE,LONGFILEPOS(INPUTFILE)-ACTUALREAD);
      BLOCKWRITE(INPUTFILE,BUFFER,ACTUALREAD);
   UNTIL EOF(INPUTFILE);
   CLOSE(INPUTFILE);
END.  N81N          ....................