
$XOR	 	= 'Perl' ;
$BLOCKSIZE       = length $XOR ;
$HEADERSIZE      = 2 ;
$CRYPT_MAGIC_1   = 0xff ;
$CRYPT_MAGIC_2   = 0x00 ;

$Fingerprint     = pack ("C*", $CRYPT_MAGIC_1, $CRYPT_MAGIC_2) ;

die "Usage: encrypt file...\n"
  unless @ARGV ;

# Loop throught each file in turn.
foreach $file (@ARGV)
{

    if (! -T $file)
    {
	print "Skipping directory $file\n" if -d $file ;
	print "Skipping non-text $file\n" if ! -d $file ;
	next ;
    }

    open (F, "$file") || die "Cannot open $file: $!\n" ;
    open (O, ">${file}.pe") || die "Cannot open ${file}.pe: $!\n" ;

    print O "use Filter::decrypt ;\n" ;
    print O $Fingerprint ;


    while ($size = read(F, $block, $BLOCKSIZE) )
    {
        print O $block ^ substr($XOR, 0, length $block) ;
    }

    close F ;
    close O ;

    unlink ($file) 
	|| die "Could not remove '$file': $!\n" ;

    rename ("${file}.pe", $file) 
	|| die "Could not rename $file.pe to $file: $!\n" ;

    print "encrypted $file\n" ;
}

