-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathREADME
108 lines (80 loc) · 4.59 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
NAME
Filter::Crypto - Create runnable Perl files encrypted with OpenSSL libcrypto
SYNOPSIS
# Encrypt a Perl script using the crypt_file script. Run it as usual:
$ crypt_file --in-place hello.pl
$ hello.pl
# Create a PAR archive containing an encrypted Perl script. Run it as usual:
# (This example assumes that you also have PAR installed.)
$ pp -f Crypto -M Filter::Crypto::Decrypt -o hello hello.pl
$ hello
# Display the Filter-Crypto distribution version number:
use Filter::Crypto;
print "This is Filter-Crypto $Filter::Crypto::VERSION\n";
DESCRIPTION
The Filter-Crypto distribution provides the means to convert your Perl files
into an encrypted, yet still runnable, format to hide the source code from
casual prying eyes.
This is achieved using a Perl source code filter. The encrypted files,
produced using the Filter::Crypto::CryptFile module, automatically have one
(unencrypted) line added to the start of them that loads the
Filter::Crypto::Decrypt module. The latter is a Perl source code filter that
decrypts the remaining (encrypted) part of the Perl file on the fly when it
is run. See perlfilter if you want to know more about how Perl source code
filters work.
These two modules can be built and installed separately, so it is possible
to set-up two separate Perl installations: one containing the
Filter::Crypto::CryptFile module to be used for encrypting your Perl files,
and another containing only the Filter::Crypto::Decrypt module for
distributing with your encrypted Perl files so that they can be run but not
easily decrypted. (Well, not very easily, anyway. Please see the WARNING
below.)
Encrypted files can also be produced more conveniently using the crypt_file
script, or (if you also have the PAR module available) using the
PAR::Filter::Crypto module. The latter can be utilized by the standard PAR
tools to produce PAR archives in which your Perl files are encrypted. The
Filter::Crypto::Decrypt module (only) can also be automatically included in
these PAR archives, so this is perhaps the easiest way to produce
redistributable, encrypted Perl files.
The actual encryption and decryption is performed using one of the symmetric
cipher algorithms provided by the OpenSSL libcrypto library. The EVP library
high-level interface functions to the various cipher algorithms themselves
are used so that your choice of algorithm (and also what password or key to
use) is made simply by answering some questions when building this
distribution. See the INSTALL file for more details.
WARNING
Please see the WARNING in the Filter::Crypto manpage regarding the level of
security provided for your source code by this software.
Please also note that the LICENCE terms disclaim any express or implied
warranty and that the author shall not be liable for any direct or indirect
damages or loss of data arising from the use of this software.
In short:
- Other people may be able to unencrypt your encrypted files;
- You may not be able to unencrypt your own encrypted files.
Do keep a copy of the configuration options chosen when building these
modules, and most importantly make sure you KEEP A BACKUP COPY OF YOUR
ORIGINAL UNENCRYPTED FILES.
COMPATIBILITY
Before version 2.00 of this distribution, encrypted source code was simply
the raw output of the chosen encryption algorithm, which is typically
"binary" data and therefore susceptible to breakage caused by perl reading
source files in "text" mode, which has become the default on Windows since
Perl 5.13.11 (specifically, Perl core commit #270ca148cf).
As of version 2.00 of this distribution, each byte of encrypted source code
is now output as a pair of hexadecimal digits and therefore no longer
susceptible to such breakage.
THIS IS AN INCOMPATIBLE CHANGE. CURRENT VERSIONS OF THESE MODULES WILL NOT
BE ABLE TO DECRYPT FILES ENCRYPTED WITH VERSIONS OF THESE MODULES PRIOR TO
VERSION 2.00 OF THIS DISTRIBUTION, EVEN WHEN BUILT WITH THE SAME
CONFIGURATION OPTIONS. EXISTING ENCRYPTED FILES WILL NEED TO BE
RE-ENCRYPTED.
INSTALLATION
See the INSTALL file.
COPYRIGHT
Copyright (C) 2004-2010, 2012-2015, 2017, 2020, 2021, 2023 Steve Hay. All
rights reserved.
LICENCE
This distribution is free software; you can redistribute it and/or modify it
under the same terms as Perl itself, i.e. under the terms of either the GNU
General Public License or the Artistic License, as specified in the LICENCE
file.