Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/09/2007, 10:48
mhatter
 
Fecha de Ingreso: septiembre-2007
Mensajes: 52
Antigüedad: 19 años, 1 mes
Puntos: 2
Re: Activar filtros en PHP

Parece que fuera un problema en la documentación. Quizás en algún momento, alrededor de PHP 4.3 a juzgar por la fecha en que se agregó la documentación que señalas, se pensó incluir filtros mcrypt predeterminados, pero ese código nunca llegó a ser parte de PHP.

Aun así, registrar un filtro para ese propósito en PHP no es muy complicado, échale un vistazo a la documentación de la función stream_filter_register(). Un ejemplo:

Código PHP:
class McryptTripledes extends php_user_filter {
    var 
$td;

    function 
filter ($entrada, $salida, &$consumido, $cerrando)
    {
        while (
$recurso = stream_bucket_make_writeable ($entrada)) {
            
$recurso->data = mcrypt_generic ($this->td, $recurso->data);
            
$consumido += $recurso->datalen;
            
stream_bucket_append ($salida, $recurso);
        }
        return 
PSFS_PASS_ON;
    }

    function 
onCreate ()
    {
        
// Opciones predeterminadas en caso de que no sean definidas
        
$iv =    '00000001';
        
$clave = '00000002';

        if (isset (
$this->params['iv']))
            
$iv = $this->params['iv'];

        if (isset (
$this->params['clave']))
            
$clave = $this->params['clave'];

        
$this->td = mcrypt_module_open('tripledes', '', 'ecb', '');

        
mcrypt_generic_init($this->td, $clave, $iv);
    }

    function 
onClose ()
    {
        
mcrypt_generic_deinit($this->td);
        
mcrypt_module_close($this->td);
    }
}

stream_filter_register ('mcrypt_tripledes', 'McryptTripledes');


// Ejemplo de uso
$opciones = array(
    
'iv'    => '12345678',
    
'clave' => 'Bla bla bla');

$aa = fopen('archivo-secreto.enc', 'wb');
stream_filter_append ($aa, 'mcrypt_tripledes',
                      
STREAM_FILTER_WRITE, $opciones);
fwrite($aa, 'Mi secreto');
fclose($aa);