Crypt::Serpent - Crypt::CBC compliant Serpent block cipher encryption module
use Crypt::Serpent;
my $cipher = new Crypt::Serpent $key;
my $ciphertext = $cipher->encrypt($plaintext);
my $plaintext = $cipher->decrypt($ciphertext);
From the Tropical Software Serpent page...
"Serpent was designed by Ross Anderson, Eli Biham and Lars
Knudsen as a candidate for the Advanced Encryption Standard. It has been
selected as one of the five finalists in the AES competition. Serpent is
faster than DES and more secure than Triple DES. It provides users with a
very high level of assurance that no shortcut attack will be found. To
achieve this, the algorithm's designers limited themselves to well
understood cryptography mechanisms, so that they could rely on the wide
experience and proven techniques of block cipher cryptanalysis. The
algorithm uses twice as many rounds as are necessary to block all currently
known shortcut attacks. This means that Serpent should be safe against as
yet unknown attacks that may be capable of breaking the standard 16 rounds
used in many types of encryption today. However, the fact that Serpent uses
so many rounds means that it is the slowest of the five AES finalists. But
this shouldn't be an issue because it still outperforms Triple DES. The
algorithm's designers maintain that Serpent has a service life of at least a
century."
"Serpent is a 128-bit block cipher, meaning that data is
encrypted and decrypted in 128-bit chunks. The key length can vary, but for
the purposes of the AES it is defined to be either 128, 192, or 256 bits.
This block size and variable key length is standard among all AES candidates
and was one of the major design requirements specified by NIST. The Serpent
algorithm uses 32 rounds, or iterations of the main algorithm."
http://www.tropsoft.com/strongenc/serpent.htm
John Hughes (jhughes@frostburg.edu)