Php Zend_Filter_加密和内存
有没有办法在不将内存限制提高到无法接受的程度的情况下,对大文件使用Php Zend_Filter_加密和内存,php,zend-framework,zend-filter,Php,Zend Framework,Zend Filter,有没有办法在不将内存限制提高到无法接受的程度的情况下,对大文件使用Zend\u Filter\u Encrypt 到目前为止,这是我的代码,但是当我必须加密大于32 MB的文件(这是我的内存限制)时,它会失败,如果我将内存设置为48 MB,它会工作: $vector = 'XX'; $algorithm = 'rijndael-192'; $options = array( 'adapter' => 'mcrypt', 'vector' => $vect
Zend\u Filter\u Encrypt
到目前为止,这是我的代码,但是当我必须加密大于32 MB的文件(这是我的内存限制)时,它会失败,如果我将内存设置为48 MB,它会工作:
$vector = 'XX';
$algorithm = 'rijndael-192';
$options = array(
'adapter' => 'mcrypt',
'vector' => $vector,
'algorithm' => $algorithm,
'key' => $key
);
$encrypt = new Zend_Filter_File_Encrypt($options);
$result = $encrypt->filter($file);
不,没有
Zend_Filter_Encrypt
的工作原理是一次加密/解密数据,因此需要完整的数据才能正常工作
如果您需要解密一个大文件,您可以在较小的块中手动解密
<?php
$key = 'secret key';
$iv = 'xxxxxxxxxxxxxxxx';
$cipher = mcrypt_module_open('rijndael-192', '', 'cbc', '');
mcrypt_generic_init($cipher, $key, $iv);
$fp = fopen('/tmp/encrypted.txt', 'r+b');
while (!feof($fp)) {
$data = fread($fp, 1154);
$decrypted = mdecrypt_generic($cipher, $data);
echo $decrypted;
}
fclose($fp);
mcrypt_generic_deinit($cipher);
mcrypt_module_close($cipher);
可能重复的: