NAME
Crypt::Rijndael - Crypt::CBC compliant Rijndael encryption module
SYNOPSIS
use Crypt::Rijndael;
# keysize() is 32, but 24 and 16 are also possible
# blocksize() is 16
$cipher = new Crypt::Rijndael "a" x 32, Crypt::Rijndael::MODE_CBC;
$cipher->set_iv($iv);
$crypted = $cipher->encrypt($plaintext);
# - OR -
$plaintext = $cipher->decrypt($crypted);
DESCRIPTION
This module implements the Rijndael cipher, which has just been selected as the Advanced Encryption Standard.
- keysize
-
Returns the keysize, which is 32 (bytes). The Rijndael cipher actually supports keylengths of 16, 24 or 32 bytes, but there is no way to communicate this to
Crypt::CBC
. - blocksize
-
The blocksize for Rijndael is 16 bytes (128 bits), although the algorithm actually supports any blocksize that is any multiple of our bytes. 128 bits, is however, the AES-specified block size, so this is all we support.
- $cipher = new $key [, $mode]
-
Create a new
Crypt::Rijndael
cipher object with the given key (which must be 128, 192 or 256 bits long). The additional$mode
argument is the encryption mode, eitherMODE_ECB
(electronic codebook mode, the default),MODE_CBC
(cipher block chaining, the same thatCrypt::CBC
does),MODE_CFB
(128-bit cipher feedback),MODE_OFB
(128-bit output feedback), orMODE_CTR
(counter mode).ECB mode is very insecure (read a book on cryptography if you dont know why!), so you should probably use CBC mode.
- $cipher->set_iv($iv)
-
This allows you to change the initial value vector used by the chaining modes. It is not relevant for ECB mode.
- $cipher->encrypt($data)
-
Encrypt data. The size of
$data
must be a multiple ofblocksize
(16 bytes), otherwise this function will croak. Apart from that, it can be of (almost) any length. - $cipher->decrypt($data)
-
Decrypts
$data
.
SEE ALSO
L<Crypt::CBC>, http://www.csrc.nist.gov/encryption/aes/
BUGS
Should EXPORT or EXPORT_OK the MODE constants.
AUTHOR
Rafael R. Sevilla <sevillar@team.ph.inter.net>
The Rijndael Algorithm was developed by Vincent Rijmen and Joan Daemen,
and has been selected as the US Government's Advanced Encryption Standard.