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.

PARAMETERS

The three parameters that can be passed along are :

CBC Handler

This parameter indicates what CBC encryption routine to use. Possible values are described in the next section.

Keyphrase

This parameter is the keyphrase for the encryption routine described as previous parameter.

Text Handler

This optional parameter is the textmode. See INTERNAL TEXT HANDLERS

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.

GOST

This is the GOST routine. You need Crypt::GOST for this.

DES_EDE3

This is the Triple DES routine. You need Crypt::DES_EDE3 for this.

Twofish

This is the Twofish routine. You need Crypt::Twofish for this.

NULL

This is the NULL routine. You need Crypt::NULL for this.

TEA

This is the TEA routine. You need Crypt::TEA 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)

Filter::Util::Call
Crypt::CBC
Crypt::Rijndael
Crypt::DES
Crypt::IDEA
Crypt::Blowfish
Crypt::GOST
Crypt::DES_EDE3
Crypt::Twofish
Crypt::NULL
Crypt::TEA

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.03.

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

Crypt::GOST - http://search.cpan.org/search?dist=Crypt-GOST

Crypt::DES_EDE3 - http://search.cpan.org/search?dist=Crypt-DES_EDE3

Crypt::Twofish - http://search.cpan.org/search?dist=Crypt-Twofish

Crypt::NULL - http://search.cpan.org/search?dist=Crypt-NULL

Crypt::TEA - http://search.cpan.org/search?dist=Crypt-TEA

Paul Marquess' article on Source Filters - http://www.samag.com/documents/s=1287/sam03030004/