mdecrypt_generic

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mdecrypt_genericDesencripta datos

Advertencia

Esta función ha sido declarada OBSOLETA a partir de PHP 7.1.0. Su uso está totalmente desaconsejado.

Descripción

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

Esta función desencripta datos. Note que la longitud de la cadena retornada puede ser mayor a la cadena no cifrada, debido al relleno de la información.

Parámetros

td

Un descriptor de cifrado devuelto por mcrypt_module_open()

data

Los datos encriptados.

Ejemplos

Ejemplo #1 Ejemplo de mdecrypt_generic()

<?php
    
/* Data */
    
$key 'esta es una clave muy larga, aún para el cifrador';
    
$plain_text 'información muy importante';

    
/* Apertura de un modo, y creación de un IV */
    
$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);

    
/* Iniciando gestor de encriptación */
    
if (mcrypt_generic_init($td$key$iv) != -1) {

        
/* Encriptación de los datos */
        
$c_t mcrypt_generic($td$plain_text);
        
mcrypt_generic_deinit($td);

        
/* Reinicialización de los buffers para desencriptación */
        
mcrypt_generic_init($td$key$iv);
        
$p_t mdecrypt_generic($td$c_t);

        
/* Finalización */
        
mcrypt_generic_deinit($td);
        
mcrypt_module_close($td);
    }

    if (
strncmp($p_t$plain_textstrlen($plain_text)) == 0) {
        echo 
"ok\n";
    } else {
        echo 
"error\n";
    }
?>

El ejemplo anterior muestra cómo chequear si los datos antes del cifrado son los mismos después de la decriptación. Es muy importante reinicializar el buffer de cifrado con mcrypt_generic_init() antes de intentar descifrar los datos.

El identificador de descifrado debería siempre ser inicializado con mcrypt_generic_init() con una clave y un IV antes de invocar a esta función. Cuando el cifrado haya terminado, se debería liberar los buffers de cifrado al invocar a mcrypt_generic_deinit() Véase mcrypt_module_open() para un ejemplo.

Ver también