(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)
mcrypt_module_open — Открывает модуль шифрования с использованием указанных алгоритма и режима
Начиная с PHP 7.1.0 функция УСТАРЕЛА, а в PHP 7.2.0 функцию УДАЛИЛИ. Полагаться на функцию настоятельно не рекомендуют.
$algorithm,$algorithm_directory,$mode,$mode_directory
   Открывает модуль шифрования с использованием указанных алгоритма и режима.
   Имя алгоритма задаётся его именем, например "twofish", или
   с помощью константы MCRYPT_ciphername.  Закрыть модуль
   можно с помощью функции mcrypt_module_close().
  
algorithmОдна из констант MCRYPT_ciphername или название алгоритма в виде строки.
algorithm_directory
       Параметр algorithm_directory используется для
       задания местонахождения модуля шифрования. Если передать пустую строку, то
       (""), то будет использовано значение директивы
       mcrypt.algorithms_dir из php.ini. Если же оно тоже не
       задано, то будет использована стандартная директория с которой
       компилировался libmcrypt (обычно /usr/local/lib/libmcrypt).
      
modeОдна из констант MCRYPT_MODE_modename, либо одна из следующих строк: "ecb", "cbc", "cfb", "ofb", "nofb" и "stream".
mode_directory
       Параметр mode_directory используется для
       задания местонахождения модуля режима. Если передать пустую строку, то
       (""), то будет использовано значение директивы
       mcrypt.modes_dir из php.ini. Если же оно тоже не
       задано, то будет использована стандартная директория, с которой
       компилировался libmcrypt (обычно /usr/local/lib/libmcrypt).
      
   Обычно возвращается дескриптор шифрования или false в случае возникновения ошибки.
  
Пример #1 Пример использования mcrypt_module_open()
<?php
    $td = mcrypt_module_open(MCRYPT_DES, '',
        MCRYPT_MODE_ECB, '/usr/lib/mcrypt-modes');
    $td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
?>
   В первой строке примера мы пробуем открыть шифр DES из
   директории по умолчанию и использовать режим ECB из директории
   /usr/lib/mcrypt-modes. Во втором примере используем
   строковые имена шифра и режима, что работает только с модулем, собранным
   с библиотекой libmcrypt 2.4.x or 2.5.x.
  
Пример #2 Пример использования mcrypt_module_open()
<?php
    /* Открываем модуль шифрования */
    $td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
    /* Создаём инициализирующий вектор и определяем длину ключа.
     * Для ОС Windows указываем MCRYPT_RAND */
    $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
    $ks = mcrypt_enc_get_key_size($td);
     /* Создаём ключ (только как пример: алгортим MD5 — плохой алгоритм хеширования для хранения секретов) */
    $key = substr(hash('md5', 'very secret key'), 0, $ks);
    /* Инициализируем шифрование */
    mcrypt_generic_init($td, $key, $iv);
    /* Шифруем данные */
    $encrypted = mcrypt_generic($td, 'This is very important data');
    /* Деинициализируем обработчик шифрования */
    mcrypt_generic_deinit($td);
    /* Инициализируем модуль дешифровки */
    mcrypt_generic_init($td, $key, $iv);
    /* Дешифруем данные */
    $decrypted = mdecrypt_generic($td, $encrypted);
    /* Деинициализируем обработчик дешифровки и закрываем модуль */
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    /* Печатаем строку */
    echo trim($decrypted) . "\n";
?>