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�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'.$passphrase, true), 0, 8);
$key = substr(md5('pass1'.$passphrase, true) .
md5('pass2'.$passphrase, true), 0, 24);
$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'.$passphrase, true), 0, 8);
$key = substr(md5('pass1'.$passphrase, true) .
md5('pass2'.$passphrase, true), 0, 24);
$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;
?>