mdecrypt_generic
(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)
mdecrypt_generic — Дешифровка данных
Эта функция объявлена УСТАРЕВШЕЙ, начиная с PHP 7.1.0 и была УДАЛЕНА в версии PHP 7.2.0. Использовать эту функцию крайне не рекомендуется.
Описание
$td
, string $data
) : stringФункция дешифрует данные. Обратите внимание, что длина возвращаемой строки по факту может быть больше длины оригинальной нешифрованной строки. Это происходит от того, что данные могут дополняться.
Список параметров
-
td
-
Дескриптор шифрования, возвращаемый mcrypt_module_open()
-
data
-
Зашифрованные данные.
Примеры
Пример #1 Пример использования mdecrypt_generic()
<?php
/* Данные */
$key = 'Это очень длинный ключ. Сильно больше, чем нужен шифру.';
$plain_text = 'очень важные данные';
/* Открываем модуль и создаем инициализирующий вектор */
$td = mcrypt_module_open('des', '', 'ecb', '');
$key = substr($key, 0, mcrypt_enc_get_key_size($td));
$iv_size = mcrypt_enc_get_iv_size($td);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
/* Инициализируем обработчик шифрования */
if (mcrypt_generic_init($td, $key, $iv) != -1) {
/* Шифруем данные */
$c_t = mcrypt_generic($td, $plain_text);
mcrypt_generic_deinit($td);
/* Переинициализируем буферы для дешифровки */
mcrypt_generic_init($td, $key, $iv);
$p_t = mdecrypt_generic($td, $c_t);
/* Убираем мусор */
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
}
if (strncmp($p_t, $plain_text, strlen($plain_text)) == 0) {
echo "ок\n";
} else {
echo "ошибка\n";
}
?>
Пример выше показывает, как проверить, что данные до шифрования совпадают с данными после дешифрования. Крайне важно переинициализировать буферы шифрования с помощью mcrypt_generic_init() перед дешифровкой данных.
Обработчик дешифрования всегда должен инициализироваться с помощью mcrypt_generic_init() с ключем и инициализирующим вектором перед вызовом функции. Как только шифрование завершено, необходимо освободить буферы шифрования путем вызова функции mcrypt_generic_deinit(). Смотрите пример в описании функции mcrypt_module_open().
Смотрите также
- mcrypt_generic() - Функция шифрует данные
- mcrypt_generic_init() - Функция инициализирует все буферы, необходимые для шифрования
- mcrypt_generic_deinit() - Эта функция деинициализирует модуль шифрования