## Filtrele de criptare

mcrypt.* și mdecrypt.* oferă criptare și decriptare simetrică, utilizând libmcrypt. Ambele seturi de filtre susțin aceiași algoritmi disponibili extensiei mcrypt sub forma mcrypt.ciphername, unde `ciphername` este denumirea algoritmului de criptare, care ar fi putut fi transmis funcției mcrypt_module_open(). De asemenea sunt disponibili și următorii cinci parametri:

Parametrii filtrului mcrypt
Parametrul | Necesar? | Implicit | Valori-exemple
--- | --- | --- | ---
mode | Opțional | cbc | cbc, cfb, ecb, nofb, ofb, stream
algorithms_dir | Opțional | ini_get('mcrypt.algorithms_dir') | Localizarea modulelor algoritmilor
modes_dir | Opțional | ini_get('mcrypt.modes_dir') | Localizarea modulelor modurilor
iv | Necesar | nu este | De obicei 8, 16, sau 32 baiți de date binare. Depinde de cifru
key | Necesar | nu este | De obicei 8, 16, sau 32 baiți de date binare. Depinde de cifru

Example #1 Criptarea conținutului unui fișier utilizând 3DES

`<?php
$passphrase = 'My secret';
/* Transformă parola în text deschis
* într-o pereche iv/key reproductibilă
*/
$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);
?>`

Example #2 Citirea unui fișier criptat

`<?php
$passphrase = 'My secret';
/* Transformă parola în text deschis
* într-o pereche iv/key reproductibilă
*/
$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;
?>`