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:
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;
?>