PHP Conference Kansai 2025

mcrypt_module_open

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

mcrypt_module_openAbre el módulo del algoritmo y del modo a utilizar

Advertencia

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.

Descripción

mcrypt_module_open(
    string $algorithm,
    string $algorithm_directory,
    string $mode,
    string $mode_directory
): resource

mcrypt_module_open() abre el módulo del algoritmo y del modo a utilizar. El nombre del algoritmo se especifica mediante el parámetro algorithm (por ejemplo: "twofish"), o bien una de las constantes MCRYPT_ciphername. La biblioteca se cierra al llamar a mcrypt_module_close().

Parámetros

algorithm

Una de las constantes MCRYPT_nombredelcifrado, o el nombre del algoritmo como string.

algorithm_directory

El parámetro algorithm_directory se utiliza para localizar el módulo de cifrado. Cuando se especifica un nombre de directorio, se utilizará. Si se especifica una cadena vacía (""), se utilizará el valor definido en la directiva mcrypt.algorithms_dir del fichero php.ini. Cuando no está definida, el directorio por omisión utilizado será aquel en el que se encuentre la biblioteca libmcrypt (habitualmente, /usr/local/lib/libmcrypt).

mode

Una de las constantes MCRYPT_MODE_nombredelmodo, o una de las siguientes strings: "ecb", "cbc", "cfb", "ofb", "nofb" o "stream".

mode_directory

El parámetro mode_directory se utiliza para localizar el módulo de cifrado. Si se especifica un nombre de directorio, se utilizará. Cuando se especifica una cadena vacía (""), se utilizará el valor de la directiva mcrypt.modes_dir del fichero php.ini. Si no está definida, el directorio por omisión utilizado será aquel en el que se encuentre la biblioteca libmcrypt (habitualmente /usr/local/lib/libmcrypt).

Valores devueltos

Normalmente, esta función devuelve un descriptor de cifrado, o false si ocurre un error.

Ejemplos

Ejemplo #1 Ejemplo con mcrypt_module_open()

<?php
$td
= mcrypt_module_open(MCRYPT_DES, '',
MCRYPT_MODE_ECB, '/usr/lib/mcrypt-modes');

$td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
?>

La primera línea del ejemplo anterior intentará abrir el cifrado DES, en el directorio por omisión, y el modo ECB en el directorio /usr/lib/mcrypt-modes. El segundo ejemplo utiliza las cadenas como nombre para el cifrado y el modo. Esto solo funciona si la extensión está compilada con libmcrypt 2.4.x o 2.5.x.

Ejemplo #2 Utilización de mcrypt_module_open() para cifrar

<?php
/* Carga un cifrado */
$td = mcrypt_module_open('rijndael-256', '', 'ofb', '');

/* Crea el VI y determina el tamaño de la clave */
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
$ks = mcrypt_enc_get_key_size($td);

/* Crea la clave (ejemplo únicamente: MD5 no es un buen algoritmo de hash para esto) */
$key = substr(hash('md5', 'very secret key'), 0, $ks);

/* Inicializa el cifrado */
mcrypt_generic_init($td, $key, $iv);

/* Cifra los datos */
$encrypted = mcrypt_generic($td, 'This is very important data');

/* Libera el gestor de cifrado */
mcrypt_generic_deinit($td);

/* Inicializa el módulo de cifrado para el descifrado */
mcrypt_generic_init($td, $key, $iv);

/* Descifra los datos */
$decrypted = mdecrypt_generic($td, $encrypted);

/* Libera el gestor de descifrado y cierra el módulo */
mcrypt_generic_deinit($td);
mcrypt_module_close($td);

/* Muestra la cadena */
echo trim($decrypted)."\n";
?>

Ver también

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top