Forum und email

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:

parâmetros para os filtros mcrypt
Parâmetro É Necessário? Valor Padrão Exemplos de Valores
Modo Opcional cbc cbc, cfb, ecb, nofb, ofb, stream
algorithms_dir Opcional ini_get('mcrypt.algorithms_dir') Localização do módulos de algoritmos
modes_dir Opcional ini_get('mcrypt.modes_dir') Localização do módulos de modos
iv Necessário N/A Tipicamente 8, 16, or 32 bytes de dados binários. Dependa da cifra.
key Necessário N/A Tipicamente 8, 16, or 32 bytes de dados binários. Dependa da cifra.

Example#1 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'.$passphrasetrue), 08);
                    
$key substr(md5('pass1'.$passphrasetrue) .
                    
md5('pass2'.$passphrasetrue), 024);
                    
$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);
                
?>

Example#2 Lendo um arquivo criptografado

<?php
                    $passphrase 
'My secret';

                    
/* Turn a human readable passphrase
                    * into a reproducable iv/key pair
                    */
                    
$iv substr(md5('iv'.$passphrasetrue), 08);
                    
$key substr(md5('pass1'.$passphrasetrue) .
                    
md5('pass2'.$passphrasetrue), 024);
                    
$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;
                
?>