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. Использовать эту функцию крайне не рекомендуется.
Описание
$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";
?>
Смотрите также
- mcrypt_module_close() - Закрывает модуль mcrypt
- mcrypt_generic() - Функция шифрует данные
- mdecrypt_generic() - Дешифровка данных
- mcrypt_generic_init() - Функция инициализирует все буферы, необходимые для шифрования
- mcrypt_generic_deinit() - Эта функция деинициализирует модуль шифрования