Mcrypt.3pm

Langue: en

Version: 2007-09-21 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

NAME

Mcrypt - Perl extension for the Mcrypt cryptography library

SYNOPSIS


  use Mcrypt;




  # Procedural routines




  $td = Mcrypt::mcrypt_load($algorithm, $algorithm_dir,

                            $mode, $mode_dir);




  Mcrypt::mcrypt_get_key_size($td);   # in bytes

  Mcrypt::mcrypt_get_iv_size($td);    # in bytes

  Mcrypt::mcrypt_get_block_size($td); # in bytes




  Mcrypt::mcrypt_init($td, $key, $iv);




  $encryptedstr = Mcrypt::mcrypt_encrypt($td, $decryptedstr);

  $decryptedstr = Mcrypt::mcrypt_decrypt($td, $encryptedstr);




  Mcrypt::mcrypt_end($td);




  # Object-oriented methods




  $td = Mcrypt->new( algorithm => $algorithm,

                     mode => $mode );




  $keysize = $td->{KEY_SIZE};

  $ivsize  = $td->{IV_SIZE};

  $blksize = $td->{BLOCK_SIZE};




  $td->init($key, $iv);




  $encryptedstr = $td->encrypt($decryptedstr);

  $decryptedstr = $td->decrypt($encryptedstr);




  # If the $td goes out of context,

  # the destructor will do this for you

  $td->end();



DESCRIPTION

This module wraps the libmcrypt encryption library for easy and convenient use from within perl. Encryption and decryption using a variety of algorithms is as easy as a few simple lines of perl.

Exported constants

The predefined groups of exports in the use statements are as follows:

use Mcrypt qw(:ALGORITHMS);

Exports the BLOWFISH DES 3DES 3WAY GOST SAFER_SK64 SAFER_SK128 CAST_128 XTEA RC2 TWOFISH CAST_256 SAFERPLUS LOKI97 SERPENT RIJNDAEL_128 RIJNDAEL_192 RIJNDAEL_256 ENIGMA ARCFOUR WAKE libmcrypt algorithms. See the mcrypt(3) man page for more details.

use Mcrypt qw(:MODES);

Exports the CBC ECB CFB OFB bOFB STREAM modes of encryption. See the mcrypt(3) man page for more details.

use Mcrypt qw(:FUNCS);

Exports the following functions: mcrypt_load, mcrypt_unload, mcrypt_init, mcrypt_end, mcrypt_encrypt, mcrypt_decrypt, mcrypt_get_block_size, mcrypt_get_iv_size, mcrypt_get_key_size.

EXAMPLES


  # Procedural approach:

  # create an ecryption descriptor:

  #   ALGORITHM: blowfish (256 bit key + 16 byte IV)

  #   MODE:      cfb

  # The user application has set:

  #   $method to either "encrypt" or "decrypt"

  #   $infile to the input filename

  #   $outfile to the output filename

  my($td) = Mcrypt::mcrypt_load( Mcrypt::BLOWFISH, '',

                                 Mcrypt::CFB, '' );

  my($key) = "32 bytes of your apps secret key";  # secret key

  my($iv) = "16 bytes of rand"; # shared initialization vector

  Mcrypt::mcrypt_init($td, $key, $iv) || die "Could not initialize td";

  print Mcrypt::mcrypt_encrypt($td, $_) while(<>);

  Mcrypt::mcrypt_end($td);




  # OO approach of the above except decrypting

  my($td) = Mcrypt->new( algorithm => Mcrypt::BLOWFISH,

                         mode => Mcrypt::CFB,

                         verbose => 0 );

  my($key) = "k" x $td->{KEY_SIZE};

  my($iv) = "i" x $td->{IV_SIZE};

  $td->init($key, $iv);

  print $td->decrypt($_) while (<>);

  $td->end();



AUTHOR

Theo Schlossnagle <jesus@omniti.com>

SEE ALSO

The libmcrypt man page: mcrypt(3). Other libmcrypt information is available at http://mcrypt.hellug.gr/.