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âmetro | É Necessário? | Valor Padrão | Exemplos de Valores |
---|---|---|---|
mode | 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. |
Exemplo #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'.$passphrase, true), 0, 8);
$key = substr(md5('pass1'.$passphrase, true) .
md5('pass2'.$passphrase, true), 0, 24);
$opts = array('iv'=>$iv, 'key'=>$key);
$fp = fopen('secret-file.enc', 'wb');
stream_filter_append($fp, 'mcrypt.tripledes', STREAM_FILTER_WRITE, $opts);
fwrite($fp, 'Secret secret secret data');
fclose($fp);
?>
Exemplo #2 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('secret-file.enc', 'rb');
stream_filter_append($fp, 'mdecrypt.tripledes', STREAM_FILTER_READ, $opts);
$data = rtrim(stream_get_contents($fp));
fclose($fp);
echo $data;
?>