(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)
mcrypt_module_open — Abre el módulo del algoritmo y del modo a utilizar
Esta función está OBSOLETA a partir de PHP 7.1.0 y ha sido ELIMINADA a partir de PHP 7.2.0. Depender de esta función está altamente desaconsejado.
$algorithm,$algorithm_directory,$mode,$mode_directory
   mcrypt_module_open() abre el módulo del algoritmo
   y del modo a utilizar. El nombre del algoritmo se especifica mediante el parámetro
   algorithm (por ejemplo: "twofish"),
   o bien una de las constantes MCRYPT_ciphername. La biblioteca se cierra
   al llamar a mcrypt_module_close().
  
algorithmOne of the MCRYPT_ciphername constants, or the name of the algorithm as string.
algorithm_directory
       El parámetro algorithm_directory se utiliza
       para localizar el módulo de cifrado. Cuando se especifica un
       nombre de directorio, se utilizará. Si se especifica una cadena vacía
       (""), se utilizará el valor definido en la directiva
       mcrypt.algorithms_dir del fichero php.ini. Cuando no está definida, el directorio por omisión utilizado
       será aquel en el que se encuentre la biblioteca libmcrypt
       (habitualmente, /usr/local/lib/libmcrypt).
      
modeOne of the MCRYPT_MODE_modename constants, or one of the following strings: "ecb", "cbc", "cfb", "ofb", "nofb" or "stream".
mode_directory
       El parámetro mode_directory se utiliza para localizar
       el módulo de cifrado. Si se especifica un nombre de directorio, se utilizará.
       Cuando se especifica una cadena vacía (""), se utilizará el valor
       de la directiva mcrypt.modes_dir del fichero php.ini.
       Si no está definida, el directorio por omisión utilizado
       será aquel en el que se encuentre la biblioteca libmcrypt
       (habitualmente /usr/local/lib/libmcrypt).
      
   Normalmente, esta función devuelve un descriptor de cifrado, o
   false si ocurre un error.
  
Ejemplo #1 Ejemplo con mcrypt_module_open()
<?php
$td = mcrypt_module_open(MCRYPT_DES, '',
    MCRYPT_MODE_ECB, '/usr/lib/mcrypt-modes');
$td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
?>
   La primera línea del ejemplo anterior intentará abrir el cifrado
   DES, en el directorio por omisión, y el modo ECB en el directorio
   /usr/lib/mcrypt-modes. El segundo ejemplo utiliza
   las cadenas como nombre para el cifrado y el modo. Esto solo funciona
   si la extensión está compilada con libmcrypt 2.4.x o 2.5.x.
  
Ejemplo #2 Utilización de mcrypt_module_open() para cifrar
<?php
/* Carga un cifrado */
$td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
/* Crea el VI y determina el tamaño de la clave */
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
$ks = mcrypt_enc_get_key_size($td);
/* Crea la clave (ejemplo únicamente: MD5 no es un buen algoritmo de hash para esto) */
$key = substr(hash('md5', 'very secret key'), 0, $ks);
/* Inicializa el cifrado */
mcrypt_generic_init($td, $key, $iv);
/* Cifra los datos */
$encrypted = mcrypt_generic($td, 'This is very important data');
/* Libera el gestor de cifrado */
mcrypt_generic_deinit($td);
/* Inicializa el módulo de cifrado para el descifrado */
mcrypt_generic_init($td, $key, $iv);
/* Descifra los datos */
$decrypted = mdecrypt_generic($td, $encrypted);
/* Libera el gestor de descifrado y cierra el módulo */
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
/* Muestra la cadena */
echo trim($decrypted)."\n";
?>
