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 el modo a ser utilizados

Advertencia

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

Descripción

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

Esta función abre el módulo del algoritmo y el modo a ser utilizados. El nombre del algoritmo es especificado en algorithm, por ejemplo "twofish" o una de las constantes MCRYPT_ciphername. El módulo es cerrado al invocar 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 ubicar el módulo de encriptación. Cuando se pasa un nombre de directorio, es utilizado. Cuando se pasa una cadena vacía (""), se utiliza el valor configurado en la directiva mcrypt.algorithms_dir del fichero php.ini. Cuando no se pasa nada, el directorio por defecto que se utiliza es en el que libmcrypt fue compilado (generalmente /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 ubicar el módulo de encriptación. Cuando se pasa un nombre de directorio, es utilizado. Cuando se pasa una cadena vacía (""), se utiliza el valor configurado en la directiva mcrypt.modes_dir del fichero php.ini. Cuando no se pasa nada, el directorio por defecto que se utiliza es en el que libmcrypt fue compilado (generalmente /usr/local/lib/libmcrypt).

Valores devueltos

Normalmente devuelve un descriptor de cifrado, o FALSE en caso de error.

Ejemplos

Ejemplo #1 Ejemplo de 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 primer línea del ejemplo anterior intentará abrir el cifrador DES desde el directorio por defecto y el modo ECB desde el directorio /usr/lib/mcrypt-modes. El segundo ejemplo utiliza cadenas como nombres para el cifrador y el modo, esto solo funciona cuando la extensión está enlazado con libmcrypt 2.4.x o 2.5.x.

Ejemplo #2 Utilizando mcrypt_module_open() en el proceso de cifrado

<?php
    
/* Open the cipher */
    
$td mcrypt_module_open('rijndael-256''''ofb''');

    
/* Create the IV and determine the keysize length, use MCRYPT_RAND
     * on Windows instead */
    
$iv mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
    
$ks mcrypt_enc_get_key_size($td);

    
/* Create key */
    
$key substr(md5('very secret key'), 0$ks);

    
/* Intialize encryption */
    
mcrypt_generic_init($td$key$iv);

    
/* Encrypt data */
    
$encrypted mcrypt_generic($td'This is very important data');

    
/* Terminate encryption handler */
    
mcrypt_generic_deinit($td);

    
/* Initialize encryption module for decryption */
    
mcrypt_generic_init($td$key$iv);

    
/* Decrypt encrypted string */
    
$decrypted mdecrypt_generic($td$encrypted);

    
/* Terminate decryption handle and close module */
    
mcrypt_generic_deinit($td);
    
mcrypt_module_close($td);

    
/* Show string */
    
echo trim($decrypted) . "\n";
?>

Ver también