Crypt::Crypt::Libmcrypt - Perl extension for libmcrypt,the mcrypt cryptographic library

VERSION

version 1.0.1

SYNOPSIS

use Crypt::Libmcrypt;

# Procedural routines

$td = Crypt::Libmcrypt::mcrypt_load($algorithm, $algorithm_dir, $mode, $mode_dir);

Crypt::Libmcrypt::mcrypt_get_key_size($td); # in bytes Crypt::Libmcrypt::mcrypt_get_iv_size($td); # in bytes Crypt::Libmcrypt::mcrypt_get_block_size($td); # in bytes

Crypt::Libmcrypt::mcrypt_init($td, $key, $iv);

$encryptedstr = Crypt::Libmcrypt::mcrypt_encrypt($td, $decryptedstr); $decryptedstr = Crypt::Libmcrypt::mcrypt_decrypt($td, $encryptedstr);

Crypt::Libmcrypt::mcrypt_end($td);

# Object-oriented methods

$td = Crypt::Libmcrypt->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

Perl extension for libmcrypt,the mcrypt cryptographic library.

Please note that the CTR mode needs this pacthed libmcrypt-2.5.8 https://osdn.net/projects/mcrypt/ to work.

Exported constants

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

use Crypt::Libmcrypt 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 algorithms. See the mcrypt(3) man page for more details.

use Crypt::Libmcrypt qw(:MODES);

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

use Crypt::Libmcrypt 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) = Crypt::Libmcrypt::mcrypt_load( Crypt::Libmcrypt::BLOWFISH, '', Crypt::Libmcrypt::CFB, '' ); my($key) = "32 bytes of your apps secret key"; # secret key my($iv) = "16 bytes of rand"; # shared initialization vector Crypt::Libmcrypt::mcrypt_init($td, $key, $iv) || die "Could not initialize td"; print Crypt::Libmcrypt::mcrypt_encrypt($td, $_) while(<>); Crypt::Libmcrypt::mcrypt_end($td);

# OO approach of the above except decrypting my($td) = Crypt::Libmcrypt->new( algorithm => Crypt::Libmcrypt::BLOWFISH, mode => Crypt::Libmcrypt::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

Li ZHOU <lzh@cpan.org>

SEE ALSO

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

COPYRIGHT AND LICENSE

This software is copyright (c) 2017 by Li ZHOU.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.