2015-02-17 2 views
1

Мой конфиг (от phpinfo()):PHP - stream_filter_append, не удалось найти фильтр (Mcrypt)

PHP Version 5.3.10 
Registered Stream Filters: convert.iconv.*, mcrypt.*, mdecrypt.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, zlib.*, bzip2.* 

mcrypt support: enable 
mcrypt_filter support: enable 
Version: 2.5.8 
Supported ciphers: cast-128 gost rijndael-128 twofish cast-256 loki97 rijndael-192 saferplus wake blowfish-compat des rijndael-256 serpent xtea blowfish enigma rc2 tripledes arcfour 
Supported modes: cbc cfb ctr ecb ncfb nofb ofb stream 

Таким образом, вы видите, что я включен Mcrypt.

Стараюсь

mcrypt_module_open('rijndael-256', '', 'ofb', ''); 

и это нормально.

Но когда я пытаюсь что-то вроде

stream_filter_append($fp, 'mcrypt.rijndael-256', STREAM_FILTER_WRITE, $opts); 

У меня есть два предупреждения

stream_filter_append(): Could not open encryption module in ... 
stream_filter_append(): unable to create or locate filter "mcrypt.rijndael-256" in ... 

Я предполагаю, что это неправильно писать

stream_filter_append($fp, 'rijndael-256', STREAM_FILTER_WRITE, $opts); // without 'mcrypt.*' 

, но в этом случае у меня есть только одно предупреждение

stream_filter_append(): unable to create or locate filter "rijndael-256" in ... 

И последнее. Шифрование/описание с «rot13» работает хорошо

stream_filter_append($fp, "string.rot13", STREAM_FILTER_WRITE); 

Таким образом, вопрос, как для шифрования/дешифрования с некоторыми из методов Mcrypt?

+0

a) Не знаю, почему это не удается, но б) просто что-то, что я видел раньше довольно часто, поэтому на всякий случай: rijndael-256 не aes256. aes256 по-прежнему rijndael-128 с 32-байтным/256-битным ключом. – VolkerK

+0

Указывает, что запрошенный метод шифрования недоступен. У вас либо опечатка, либо один из шифров (rijndael-256) не скомпилирован в вашу версию mcrypt.so. –

+0

@ kamlesh.bar .... но затем снова mcrypt_module_open работает, и необходимые шифры и режимы выводятся в phpinfo(), это странная часть - до тех пор, пока выполняются сценарии phpinfo() и stream_filter_append() «тем же» экземпляром php (а не одним модулем веб-сервера и одним через php-cli -> разные файлы php.ini) – VolkerK

ответ

0

Извините, я потерял из виду некоторые важные детали. еще одна строка:

$opts = array('iv' => $iv, 'key' => $key, 'mode' => 'stream'); 
stream_filter_append($fp, 'mcrypt.rijndael-256', STREAM_FILTER_WRITE, $opts); 

И, конечно, он не потому, что Rijndael-256 не поддерживается в потоковом режиме. Так что спасибо за ваши комментарии и, пожалуйста, извините, что беспокою вас.

Смежные вопросы