Crypt::Libmcrypt - Perl extension for libmcrypt,the mcrypt cryptographic library
VERSION
version 1.0.2
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.