(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)
mcrypt_module_open — Abre o módulo do algoritmo e o modo a ser utilizado
Esta função foi DESCONTINUADA a partir do PHP 7.1.0 e foi REMOVIDA a partir do PHP 7.2.0. O uso desta função é fortemente desencorajado.
$algorithm,$algorithm_directory,$mode,$mode_directory
   Esta função abre o módulo do algoritmo e o modo a ser usado.
   O nome do algoritmo é especificado em "algorithm", por exemplo, "twofish" ou é
   uma das constantes MCRYPT_ciphername. O módulo é fechado chamando
   mcrypt_module_close().
  
algorithmUma das constantes MCRYPT_nome_da_cifra ou o nome do algoritmo como string.
algorithm_directory
       O parâmetro algorithm_directory é usado para localizar
       o módulo de criptografia. Quando é informado um nome de diretório, ele é usado. Quando
       ele é definido como uma string vazia (""), o valor definido pela
       diretiva mcrypt.algorithms_dir do php.ini é usado. Quando
       ele não é definido, o diretório padrão usado é aquele que foi compilado
       no libmcrypt (geralmente /usr/local/lib/libmcrypt).
      
modeUma das constantes MCRYPT_MODE_nome_do_modo ou uma das seguintes strings: "ecb", "cbc", "cfb", "ofb", "nofb" ou "stream".
mode_directory
       O parâmetro mode_directory é usado para localizar
       o módulo de criptografia. Quando é informado um nome de diretório, ele é usado. Quando
       ele é definido como uma string vazia (""), o valor definido pela
       diretiva mcrypt.modes_dir do php.ini é usado. Quando
       ele não é definido, o diretório padrão usado é aquele que foi compilado em
       no libmcrypt (geralmente /usr/local/lib/libmcrypt).
      
   Normalmente, ele retorna um descritor de criptografia ou false em caso de erro.
  
Exemplo #1 Exemplos de mcrypt_module_open()
<?php
    $td = mcrypt_module_open(MCRYPT_DES, '',
        MCRYPT_MODE_ECB, '/usr/lib/mcrypt-modes');
    $td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
?>
   A primeira linha no exemplo acima tentará abrir a cifra DES do
   diretório padrão e o modo ECB do diretório
   /usr/lib/mcrypt-modes. O segundo exemplo usa
   strings como nome para a cifra e modo, isso só funciona quando a
   extensão é compilada com o libmcrypt 2.4.x ou 2.5.x.
  
Exemplo #2 Usando mcrypt_module_open() em criptografia
<?php
    /* Abre a cifra */
    $td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
    /* Cria o IV e determina o comprimento da chave, use MCRYPT_RAND
     * no Windows */
    $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
    $ks = mcrypt_enc_get_key_size($td);
    /* Cria a chave (somente como exemplo: MD5 não é um bom algoritmo de hash para isso) */
    $key = substr(hash('md5', 'very secret key'), 0, $ks);
    /* Inicializa a criptografia */
    mcrypt_generic_init($td, $key, $iv);
    /* Criptografa os dados */
    $encrypted = mcrypt_generic($td, 'This is very important data');
    /* Desinicializa o identificador de criptografia */
    mcrypt_generic_deinit($td);
    /* Inicializa o módulo de criptografia para descriptografia */
    mcrypt_generic_init($td, $key, $iv);
    /* Descriptografa a string criptografada */
    $decrypted = mdecrypt_generic($td, $encrypted);
    /* Desinicializa o identificador de criptografia e fecha o módulo */
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    /* Exibe a string */
    echo trim($decrypted) . "\n";
?>
