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. Использовать эту функцию крайне не рекомендуется.

Описание

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);

    
/* Создаем ключ */
    
$key substr(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";
?>

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