Открывает модуль шифрования с использованием указанных алгоритма и режима

# mcrypt_module_open

(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 функцию УДАЛИЛИ. Полагаться на функцию настоятельно не рекомендуют.

### Описание

function mcrypt_module_open(
string `$algorithm`,
string `$algorithm_directory`,
string `$mode`,
string `$mode_directory`
): resource

Открывает модуль шифрования с использованием указанных алгоритма и режима. Имя алгоритма задаётся его именем, например `"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";
    ?>

### Смотрите также

- mcrypt_module_close() - Закрывает модуль mcrypt
- mcrypt_generic() - Функция шифрует данные
- mdecrypt_generic() - Дешифровка данных
- mcrypt_generic_init() - Функция инициализирует все буферы, необходимые для шифрования
- mcrypt_generic_deinit() - Эта функция деинициализирует модуль шифрования

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open