DECLARE SUB AskTo ()
DECLARE SUB ErrMsg (code%, file$)
DECLARE SUB GetInputs (file$, tkey$)
DECLARE SUB GetCmdLine (file$, tkey$)
DECLARE SUB DoEncrypt (file$, tkey$)
'ben's cool encryption program
'ENCRYPT.EXE  
'*******************************************
'variables
  tkey$ = ""            'encryption/decryption key
  temp$ = ""            'read from file into here
  file$ = ""            'file to encrypt/decrypt
'*******************************************
main:
  PRINT
  COLOR 9
  PRINT "ENCRYPT.EXE, a cool program by Ben Weir"
  COLOR 7
  GetCmdLine file$, tkey$
  'GetInputs file$, tkey$
  DoEncrypt file$, tkey$
END

DEFINT A-Z
SUB AskTo
  LOCATE , 1
  COLOR 4
  PRINT "Do you really want to abort? ";
  COLOR 7
  DO
    in$ = UCASE$(INKEY$)
  LOOP UNTIL in$ = "Y" OR in$ = "N"
  IF in$ = "Y" THEN ErrMsg 3, file$
  LOCATE , 1
  PRINT SPACE$(80);
END SUB

SUB DoEncrypt (file$, tkey$)
  filepos! = 0
  OPEN file$ FOR BINARY AS #1
  tkey = LEN(tkey$)
  TotalBytes! = LOF(1)
  IF TotalBytes! = 0 THEN ErrMsg 1, file$
  temp$ = " "
  PRINT "Now encrypting: ";
  COLOR 2
  PRINT file$
  COLOR 7
  PRINT "with this key:  ";
  COLOR 2
  PRINT tkey$
  COLOR 7
  t! = TIMER
  DO
    FOR x = 1 TO tkey
      filepos! = filepos! + 1
      tkeyx$ = MID$(tkey$, x, 1)
      GET #1, filepos!, temp$
      temp$ = CHR$(ASC(temp$) XOR ASC(tkeyx$))
      PUT #1, filepos!, temp$
      IF filepos! = TotalBytes! THEN EXIT FOR
    NEXT x
    LOCATE , 1
    percent! = (filepos! / TotalBytes!) * 100
    PRINT "percent finished:";
    PRINT USING "###"; percent!;
    in$ = INKEY$
    IF in$ = CHR$(27) THEN AskTo
  LOOP UNTIL filepos! = TotalBytes!
  CLOSE #1
  TotalTime! = TIMER - t!
  IF TotalTime! = 0 THEN TotalTime! = .01
  PRINT
  PRINT file$; " successfully encrypted in";
  COLOR 2
  PRINT USING "###.##"; TotalTime!;
  COLOR 7
  PRINT " seconds,";
  COLOR 2
  PRINT USING "##.##"; (TotalBytes! / TotalTime!) / 1024;
  COLOR 7
  PRINT " kb per second"
END SUB

DEFSNG A-Z
SUB ErrMsg (code%, file$)
  SELECT CASE code%
    CASE 1: PRINT "File not found: "; file$
            CLOSE #1
            KILL file$
    CASE 2: PRINT "Syntax:"
            PRINT "     ENCRYPT.EXE  "
    CASE 3: COLOR 4
            PRINT "ENCRYPTION ABORTED!"
   
  END SELECT
END
END SUB

DEFINT A-Z
SUB GetCmdLine (file$, tkey$)
  lencom = LEN(COMMAND$)
  COMline$ = LTRIM$(RTRIM$(COMMAND$))
  FOR x = 1 TO lencom
    temp$ = MID$(COMline$, x, 1)
    IF temp$ <> " " AND tkey = 0 THEN file$ = file$ + temp$
    IF temp$ <> " " AND tkey = 1 THEN tkey$ = tkey$ + temp$
    IF temp$ = " " THEN tkey = 1
  NEXT x
  IF file$ = "" OR tkey$ = "" THEN ErrMsg 2, file$
END SUB

DEFSNG A-Z
SUB GetInputs (file$, tkey$)
  PRINT
  PRINT "what file to encrypt/decrypt: ";
  INPUT file$
  PRINT
  PRINT "what is the key: ";
  INPUT tkey$
  PRINT
END SUB

    Source: geocities.com/siliconvalley/park/3889

               ( geocities.com/siliconvalley/park)                   ( geocities.com/siliconvalley)