Encryption Filters

Os filtros mcrypt.* e mdecrypt.* permitem criptografar e descriptografar usando libmcrypt. Ambos os conjuntos de filtros suportam os mesmos algoritmos disponíveis na extensão mcrypt na forma de mcrypt.ciphername onde ciphername é o nome da cifra como seria passada para mcrypt_module_open(). Os cinco filtros a seguir estão disponíveis:

Tabela O-1. parâmetros para os filtros mcrypt

ParâmetroÉ Necessário?Valor PadrãoExemplos de Valores
ModoOpcionalcbccbc, cfb, ecb, nofb, ofb, stream
algorithms_dirOpcionalini_get('mcrypt.algorithms_dir')Localização do módulos de algoritmos
modes_dirOpcionalini_get('mcrypt.modes_dir')Localização do módulos de modos
ivNecessárioN/ATipicamente 8, 16, or 32 bytes de dados binários. Dependa da cifra.
keyNecessárioN/ATipicamente 8, 16, or 32 bytes de dados binários. Dependa da cifra.

Exemplo O-10. Criptografando saída de arquivo usando 3DES

<?php
                    $passphrase
= 'My secret';

                    
/* Turn a human readable passphrase
                    * into a reproducable iv/key pair
                    */
                    
$iv = substr(md5('iv'.$passphrase, true), 0, 8);
                    
$key = substr(md5('pass1'.$passphrase, true) .
                    
md5('pass2'.$passphrase, true), 0, 24);
                    
$opts = array('iv'=>$iv, 'key'=>$key);

                
$fp = fopen('secert-file.enc', 'wb');
                
stream_filter_append($fp, 'mcrypt.tripledes', STREAM_FILTER_WRITE, $opts);
                
fwrite($fp, 'Secret secret secret data');
                
fclose($fp);
                
?>

Exemplo O-11. Lendo um arquivo criptografado

<?php
                    $passphrase
= 'My secret';

                    
/* Turn a human readable passphrase
                    * into a reproducable iv/key pair
                    */
                    
$iv = substr(md5('iv'.$passphrase, true), 0, 8);
                    
$key = substr(md5('pass1'.$passphrase, true) .
                    
md5('pass2'.$passphrase, true), 0, 24);
                    
$opts = array('iv'=>$iv, 'key'=>$key);

                
$fp = fopen('secert-file.enc', 'rb');
                
stream_filter_append($fp, 'mdecrypt.tripledes', STREAM_FILTER_WRITE, $opts);
                
$data = rtrim(stream_get_contents($fp));
                
fclose($fp);

                echo
$data;
                
?>