Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : Mcrypt Encryption Functions : mcrypt_module_open

mcrypt_module_open

Opens the module of the algorithm and the mode to be used (PHP 4 >= 4.0.2, PHP 5)
resource mcrypt_module_open ( string algorithm, string algorithm_directory, string mode, string mode_directory )

Example 1301. mcrypt_module_open() examples

<?php
   $td
= mcrypt_module_open(MCRYPT_DES, '',
       
MCRYPT_MODE_ECB, '/usr/lib/mcrypt-modes');

   
$td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
?>

Example 1302. Using mcrypt_module_open() in encryption

<?php
   
/* Open the cipher */
   
$td = mcrypt_module_open('rijndael-256', '', 'ofb', '');

   
/* Create the IV and determine the keysize length, use MCRYPT_RAND
    * on Windows instead */
   
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
   
$ks = mcrypt_enc_get_key_size($td);

   
/* Create key */
   
$key = substr(md5('very secret key'), 0, $ks);

   
/* Intialize encryption */
   
mcrypt_generic_init($td, $key, $iv);

   
/* Encrypt data */
   
$encrypted = mcrypt_generic($td, 'This is very important data');

   
/* Terminate encryption handler */
   
mcrypt_generic_deinit($td);

   
/* Initialize encryption module for decryption */
   
mcrypt_generic_init($td, $key, $iv);

   
/* Decrypt encrypted string */
   
$decrypted = mdecrypt_generic($td, $encrypted);

   
/* Terminate decryption handle and close module */
   
mcrypt_generic_deinit($td);
   
mcrypt_module_close($td);

   
/* Show string */
   
echo trim($decrypted) . "\n";
?>

Code Examples / Notes » mcrypt_module_open

mon

In the text example:
$key = substr(md5('very secret key'), 0, $ks);
Builds a key of $ks/2 effective bytes.


01-aug-2003 04:14

Doing a trim($decrypted) will remove the null padding that may occur as a result of decryption.
The problem is if you're encrypting something like a MSWord document which can commonly end with nulls. The result $decrypted will be smaller than the original cleartext - which will then fail to open in MSOffice.
To get around this, make sure you store the length of the original cleartext, and when you decrypt it, do:
$decrypted = substr(mdecrypt_generic($td, $encrypted), 0, $originalLength);


Change Language


Follow Navioo On Twitter
mcrypt_cbc
mcrypt_cfb
mcrypt_create_iv
mcrypt_decrypt
mcrypt_ecb
mcrypt_enc_get_algorithms_name
mcrypt_enc_get_block_size
mcrypt_enc_get_iv_size
mcrypt_enc_get_key_size
mcrypt_enc_get_modes_name
mcrypt_enc_get_supported_key_sizes
mcrypt_enc_is_block_algorithm_mode
mcrypt_enc_is_block_algorithm
mcrypt_enc_is_block_mode
mcrypt_enc_self_test
mcrypt_encrypt
mcrypt_generic_deinit
mcrypt_generic_end
mcrypt_generic_init
mcrypt_generic
mcrypt_get_block_size
mcrypt_get_cipher_name
mcrypt_get_iv_size
mcrypt_get_key_size
mcrypt_list_algorithms
mcrypt_list_modes
mcrypt_module_close
mcrypt_module_get_algo_block_size
mcrypt_module_get_algo_key_size
mcrypt_module_get_supported_key_sizes
mcrypt_module_is_block_algorithm_mode
mcrypt_module_is_block_algorithm
mcrypt_module_is_block_mode
mcrypt_module_open
mcrypt_module_self_test
mcrypt_ofb
mdecrypt_generic
eXTReMe Tracker