(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)
mdecrypt_generic — Desencripta los datos
Esta función ha sido declarada OBSOLETA a partir de PHP 7.1.0 y será ELIMINADA a partir de PHP 7.2.0. Su uso está totalmente desaconsejado.
Desencripta los datos data
. Tenga en cuenta que la longitud
del string desencriptado puede ser más larga que el string original, ya que
puede haber sido completado con caracteres.
td
Un descriptor de cifrado, devuelto por la función mcrypt_module_open()
data
Los datos cifrados.
Devuelve el string desencriptado.
Ejemplo #1 Ejemplo con mdecrypt_generic()
<?php
/* Datos */
$key = 'Esta es una clave de cifrado muy larga, incluso demasiado larga';
$plain_text = 'Estos son datos importantes';
/* Abre el módulo y crea un VI */
$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);
/* Inicializa el módulo de cifrado */
if (mcrypt_generic_init($td, $key, $iv) != -1) {
/* Cifra los datos */
$c_t = mcrypt_generic($td, $plain_text);
mcrypt_generic_deinit($td);
/* Reinicia los buffers para el descifrado */
mcrypt_generic_init($td, $key, $iv);
$p_t = mdecrypt_generic($td, $c_t);
/* Limpia */
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
}
if (strncmp($p_t, $plain_text, strlen($plain_text)) == 0) {
echo "ok\n";
} else {
echo "error\n";
}
?>
El ejemplo anterior muestra cómo verificar que los datos antes del cifrado son los mismos que después del cifrado/descifrado. Es muy importante reiniciar el buffer de cifrado con mcrypt_generic_init() antes de descifrar los datos.
El gestor de descifrado debe ser siempre inicializado por la función mcrypt_generic_init() con una clave y un VI antes de llamar a esta función. Cuando el cifrado está hecho, es necesario liberar los datos cifrados llamando a mcrypt_generic_deinit(). Consulte mcrypt_module_open() para un ejemplo.