Filtres de chiffrement

mcrypt.* et mdecrypt.* fournissent un syst�me de chiffrement sym�trique bas� sur libmcrypt. Les deux filtres supportent les m�mes algorithmes disponibles avec la biblioth�que mcrypt, sous la forme de la directive mcrypt.ciphername o� ciphername est le nom du chiffrement qui sera pass� � mcrypt_module_open(). Les cinq param�tres suivants sont aussi disponibles :

Param�tres du filtre mcrypt
Param�tre Obligatoire Par d�faut Valeurs possibles
mode Optionnel cbc cbc, cfb, ecb, nofb, ofb, stream
algorithms_dir Optionnel ini_get('mcrypt.algorithms_dir') Chemin vers les algorithmes de modules
modes_dir Optionnel ini_get('mcrypt.modes_dir') Chemin vers les modes de modules
iv Obligatoire N/A G�n�ralement 8, 16 ou 32 octets de donn�es binaires. D�pend du chiffrement
key Obligatoire N/A G�n�ralement 8, 16 ou 32 octets de donn�es binaires. D�pend du chiffrement

Exemple #1 Chiffrement d'un fichier avec 3DES

<?php
$passphrase 
'My secret';

/* Transforme un mot de passe humain
 * en une paire iv/cl�
 */
$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);
?>

Exemple #2 Lecture d'un fichier chiffr�

<?php
$passphrase 
'My secret';

/* Transforme un mot de passe humain
 * en une paire iv/cl�
 */
$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;
?>