NAME
Filter::CBC - Source filter for Cipher Block Chaining
SYNOPSIS
use Filter::Hex; use Filter::CBC "Rijndael","my secret key";
52616e646f6d4956d6da837a7590d113f67d363b95eae044ac74937c2b7fc9dbaffb59656abebf5b69a50559bc9b4233
-or-
use Filter::CBC "Rijndael","my secret key","hex";
52616e646f6d4956d6da837a7590d113f67d363b95eae044ac74937c2b7fc9dbaffb59656abebf5b69a50559bc9b4233
DESCRIPTION
Filter::CBC is a Source filter that uses Cipher Block Chaining (CBC) to encrypt your code. The tricky part is that most CBC Algorithms have binary output. Filter::Hex bypasses this obstacle. By stacking source filters, the encrypted code is first converted from HEX to plain CBC readable data. After that the appropriate algorithm and keyphrase are used to decrypt it.
DOWNSIDES
Speed
Source filters are slow. VERY Slow. Filter::CBC is not an exception. Well uhm kinda. Filter::CBC is even slower. Be warned, be VERY VERY warned.
INTERNAL CBC HANDLERS
The following parameters can be passed as part of the CBC encryption routine
- Rijndael
-
This is the AES (Advanced Encryption Scheme) routine. You need Crypt::Rijndael for this.
- DES
-
This is the DES routine. You need Crypt::DES for this.
- IDEA
-
This is the IDEA routine. You need Crypt::IDEA for this.
- Blowfish
-
This is the Blowfish routine. You need Crypt::Blowfish for this.
But any CBC Compatible routine will work.
INTERNAL TEXT HANDLERS
The following parameters can be passed as part of the internal text handling.
- hex
-
If the encrypted code is converted to hex values, you need to use this parameter first. Source filters can't handle binary data properly.
- uudecode
-
If the encrypted code is uuencoded, you need to use this parameter first. Source filters can't handle binary data properly.
If you don't pass a parameter for text handling, Filter::CBC will try to decrypt the code anyway. If the encrypted code is clean enough (for example when using Rot13 encryption), Text handling isn't necessary. In all other cases you need to stack a filter so the encrypted code is handled properly.
The following example uses Filter::Hex instead of the internal Text handler for hex converted encrypted code.
use Filter::Hex; use Filter::CBC "Rijndael","my secret key"; 52616e646f6d4956d6da837a7590d113f67d363b95eae044ac74937c2b7fc9dbaffb59656abebf5b69a50559bc9b4233
REQUIREMENTS
Filter::CBC requires the following modules (depending on your needs)
THANKS A MILLION
Alot of thanks to Ray Brinzer (Petruchio on Perlmonks) for giving an example on how to handle parameters with use.
TODO
A bit less then first release but still plenty.
DISCLAIMER
This code is released under GPL (GNU Public License). More information can be found on http://www.gnu.org/copyleft/gpl.html
VERSION
This is Filter::CBC 0.0.2.
AUTHOR
Hendrik Van Belleghem (beatnik@quickndirty.org)
SEE ALSO
GNU & GPL - http://www.gnu.org/copyleft/gpl.html
Filter::Util::Call (http://search.cpan.org/search?dist=Filter)
Crypt::CBC (http://search.cpan.org/search?dist=Crypt-CBC)
Crypt::Rijndael (http://search.cpan.org/search?dist=Crypt-Rijndael)
Crypt::DES (http://search.cpan.org/search?dist=Crypt-DES)
Crypt::IDEA (http://search.cpan.org/search?dist=Crypt-IDEA)
Crypt::Blowfish (http://search.cpan.org/search?dist=Crypt-Blowfish)
Paul Marquess' article on Source Filters (http://www.samag.com/documents/s=1287/sam03030004/)
12 POD Errors
The following errors were encountered while parsing the POD:
- Around line 71:
'=item' outside of any '=over'
- Around line 78:
=back doesn't take any parameters, but you said =back 3
- Around line 86:
=back doesn't take any parameters, but you said =back 3
- Around line 94:
=back doesn't take any parameters, but you said =back 3
- Around line 102:
=back doesn't take any parameters, but you said =back 3
- Around line 107:
You forgot a '=back' before '=head1'
- Around line 111:
'=item' outside of any '=over'
- Around line 118:
=back doesn't take any parameters, but you said =back 3
- Around line 127:
=back doesn't take any parameters, but you said =back 3
- Around line 141:
You forgot a '=back' before '=head1'
- Around line 145:
'=item' outside of any '=over'
- Around line 157:
You forgot a '=back' before '=head1'