|
(PHP 4 >= 4.0.2)
mcrypt_module_open - эта функция открывает модуль алгоритма и используемый режим.
Описаниеresource mcrypt_module_open (string algorithm, string algorithm_directory, string mode, string mode_directory)
Эта функция открывает модуль алгоритма и используемый режим.
Имя алгоритма специфицируется в параметре algorithm, например, "twofish",
или является одной из констант MCRYPT_ciphername. Модуль закрывается вызовом функции
mcrypt_module_close(). Нормально возвращается дескриптор шифрования,
FALSE - при ошибке. algorithm_directory и
mode_directory используются для локализации модулей шифрования. Если вы предоставили имя
директории, используется оно. Если вы установите в один из этих параметров пустую строку (""), используется значение ini-директивы
mcrypt.algorithms_dir или mcrypt.modes_dir. Если они не установлены, используются директории по умолчанию, которые были
скомпилированы для libmcrypt (обычно это /usr/local/lib/libmcrypt).
Пример 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-шифр из директории по умолчанию и EBC-режим из директории
/usr/lib/mcrypt-modes. Вторая строка использует строки как имена для шифра и dmode; это будет
работать только в том случае, если расширение скомпилировано относительно libmcrypt 2.4.x или 2.5.x.
Пример 2. Использование mcrypt_module_open() при шифровании
<?php
/* Открыть шифр */
$td = mcrypt_module_open ('rijndael-256', '', 'ofb', '');
/* Создать IV и определить длину keysize */
$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";
?> |
|
Первая строка примера пытается открыть DES-шифр из директории по умолчанию и EBC-режим из директории
/usr/lib/mcrypt-modes. Вторая строка использует строки как имена для шифра и dmode, это будет
работать только в том случае, если расширение скомпилировано относительно libmcrypt 2.4.x или 2.5.x.
См. также mcrypt_module_close(),
mcrypt_generic(), mdecrypt_generic()
, mcrypt_generic_init() и
mcrypt_generic_deinit(). | |