---
name: "Crypt::Rijndael"
section: "3pm"
platform: "linux"
package: "libcrypt-rijndael-perl"
version: "1.16-1+b5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Crypt::Rijndael"
---

# Crypt::Rijndael(3pm)

Crypt::CBC compliant Rijndael encryption module

## NAME

Crypt::Rijndael - Crypt::CBC compliant Rijndael encryption module

## VERSION

Version 1.16

## SYNOPSIS

```
 use Crypt::Rijndael;
 # keysize() is 32, but 24 and 16 are also possible
 # blocksize() is 16
 $cipher = Crypt::Rijndael->new( "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 = Crypt::Rijndael-\>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, either `"MODE_ECB"` (electronic codebook mode, the default), `"MODE_CBC"` (cipher block chaining, the same that `"Crypt::CBC"` does), `"MODE_CFB"` (128-bit cipher feedback), `"MODE_OFB"` (128-bit output feedback), or `"MODE_CTR"` (counter mode).

  ECB mode is very insecure (read a book on cryptography if you don't 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 of `"blocksize"` (16 bytes), otherwise this function will croak. Apart from that, it can be of (almost) any length.

- $cipher-\>decrypt($data)

  Decrypts `$data`.

### Encryption modes

Use these constants to select the cipher type:

- MODE\_CBC - Cipher Block Chaining

  - MODE\_CFB - Cipher feedback

  - MODE\_CTR - Counter mode

  - MODE\_ECB - Electronic cookbook mode

  - MODE\_OFB - Output feedback

  - MODE\_PCBC - ignore this one for now :)

  ## SEE ALSO

Crypt::CBC, http://www.csrc.nist.gov/encryption/aes/

## BUGS

Should EXPORT or EXPORT\_OK the MODE constants.

## AUTHOR

Currently maintained by Leon Timmermans `"leont@cpan.org"`.

Previously maintained by brian d foy, `"<bdfoy@cpan.org>"`.

Original code by  Rafael R. Sevilla.

The Rijndael Algorithm was developed by Vincent Rijmen and Joan Daemen, and has been selected as the US Government's Advanced Encryption Standard.

## SOURCE

This code is in Github:

```
        git://github.com/leont/crypt-rijndael.git
```

## LICENSE

This software is licensed under the Lesser GNU Public License v3 (29 June 2007). See the included COPYING file for details.
