Forum und email
Šifrovací filtry

Šifrovací filtry

mcrypt.* a mdecrypt.* poskytují symetrické šifrování a dešifrování pomocí libmcrypt. Obě sady filtrů podporují stejné algoritmy dostupné pro mcrypt extension ve formě mcrypt.ciphername, kde ciphername je název šifry, jak byl předán do funkce mcrypt_module_open(). K dispozici je také těchto pět parametrů filtru:

Tabulka O-1. parametry filtru mcrypt

ParametrVyžadován?VýchozíUkázky hodnot
modenepovinnýcbccbc, cfb, ecb, nofb, ofb, stream
algorithms_dirnepovinnýini_get('mcrypt.algorithms_dir')Umístění modulů algoritmů
modes_dirnepovinnýini_get('mcrypt.modes_dir')Umístění modulů režimů
ivpovinnýN/ATypicky 8, 16, nebo 32 B binárních dat. Záleží na šifře.
keypovinnýN/ATypicky 8, 16, nebo 32 B binárních dat. Záleží na šifře.

Příklad O-10. šifrování souboru pomocí 3DES

<?php
$passphrase
= 'My secret';

/* Převeď lidsky čitelné heslo
* na reprodukovatelný pár iv/key
*/
$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);
?>

Příklad O-11. ?tení za?ifrovaného souboru

<?php
$passphrase
= 'My secret';

/* Převeď lidsky čitelné heslo
* na reprodukovatelný pár iv/key
*/
$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;
?>