Приглашаем посетить
Кулинария (cook-lib.ru)

Шифрующие фильтры


Шифрующие фильтры

mcrypt.* и mdecrypt.* обеспечивают симметрическое шифрование и дешифрование при помощи libmcrypt. Оба набора фильтров поддерживают те же алгоритмы, что и расширение mcrypt в виде mcrypt.ciphername, где ciphername - это название шифра, как если бы оно передавалось функции mcrypt_module_open(). Также доступны следующие пять параметров:

Таблица N-1. Параметры фильтра mcrypt

ПараметрОбязателен?По умолчаниюПример значения
modeНетcbccbc, cfb, ecb, nofb, ofb, stream
algorithms_dirНетini_get('mcrypt.algorithms_dir')Путь к модулям алгоритмов
modes_dirНетini_get('mcrypt.modes_dir')Путь к модулям режимов
ivДаN/AОбычно 8, 16 или 32 байта бинарных данных. Зависит от шифра
keyДаN/AОбычно 8, 16 или 32 байта бинарных данных. Зависит от шифра

Пример N-10. Шифрование вывода в файл используя 3DES

<?php
$passphrase 
'My secret';

/* Turn a human readable passphrase
 * into a reproducable iv/key pair
 */
$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);
?>

Пример N-11. Чтение зашифрованного файла

<?php
$passphrase 
'My secret';

/* Turn a human readable passphrase
 * into a reproducable iv/key pair
 */
$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;
?>