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

Описание

mdecrypt_generic ( resource $td , string $data ) : string

Эта функция дешифрует данные. Обратите внимание, что длина возвращаемой строки по факту может быть больше длины оригинальной нешифрованной строки. Это происходит от того, что данные могут дополняться.

Список параметров

td

Дескриптор шифрования, возвращаемый mcrypt_module_open()

data

Зашифрованные данные.

Примеры

Пример #1 Пример использования mdecrypt_generic()

<?php
    
/* Данные */
    
$key 'Это очень длинный ключ. Сильно больше, чем нужен шифру.';
    
$plain_text 'очень важные данные';

    
/* Открываем модуль и создаем инициализирующий вектор */
    
$td mcrypt_module_open('des''''ecb''');
    
$key substr($key0mcrypt_enc_get_key_size($td));
    
$iv_size mcrypt_enc_get_iv_size($td);
    
$iv mcrypt_create_iv($iv_sizeMCRYPT_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_textstrlen($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() - Эта функция деинициализирует модуль шифрования