This module is a PAR::Filter sub-class for producing PAR archives
containing encrypted Perl files. The PAR::Filter class itself is part of the
PAR distribution, and is clearly a prerequisite for using this sub-class.
The usual means of producing a PAR archive is using the <B>ppB> script, which also
comes with the PAR distribution. That scripts <B>-fB> and <B>-FB> command-line
options can be used to specify a filter through which to pass the Perl files
being put into the PAR archive. Specifying this sub-class as the filter (i.e.
"<B>-f CryptoB> for scripts and/or <B>-F CryptoB>" for modules) means that the
Perl files will be encrypted using the
Filter::Crypto::CryptFile module. The resulting
encrypted files are what will be placed in the PAR archive.
Note that the encrypted script requires the
Filter::Crypto::Decrypt module in order to decrypt
itself when it is run. The original Perl script will not have specified any
such dependency, so <B>ppB> will not automatically include that module in the PAR
archive for you. Therefore, you must use the <B>-MB> option to force that module
to be included. Also note that if you use the <B>-FB> option to encrypt modules
as well then the filtering will automatically skip the
Filter::Crypto::Decrypt module itself for obvious
reasons. A typical <B>ppB> invocation is thus something like:
$ pp -f Crypto -F Crypto -M Filter::Crypto::Decrypt -o hello hello.pl
(Version 0.75 of the Module::ScanDeps module, used by <B>ppB>
to scan for dependencies that need including in the PAR archive, is known to
have problems finding shared library files for modules specified by <B>ppB>s
<B>-MB> option (as illustrated above). If you find that the shared library file
for Filter::Crypto::Decrypt is missing from your PAR archive then you need to
upgrade Module::ScanDeps to version 0.76 or higher.)
Of course, you must not include the Filter::Crypto::CryptFile module as well,
otherwise people to whom you distribute your PAR archive will have the means to
easily decrypt the encrypted Perl script within it!
Also, note that the script is encrypted by reading its entire contents into
memory, encrypting it in memory, and then writing it out to disk. This should
be safe for most purposes given that Perl scripts are typically not very large,
but other methods should be considered instead if this is likely to cause
out-of-memory errors due to the size of the scripts, e.g. if the scripts have
very large __DATA__ sections.