private function fileDecrypt($filename, RSA $rsa) { // Временная директория $workdir = sys_get_temp_dir() . '/' . md5(RSA::bcrand('0', '9999999999999999999999') . date('-Y-m-d-H-i-s')); mkdir($workdir); // Распаковываем фрхив с зашифрованными файлами $zip = new \ZipArchive(); $zip->open($filename); $zip->extractTo($workdir); $zip->close(); // Расшифровываем файл с описанием $finfo = json_decode(base64_decode($rsa->decrypt(file_get_contents($workdir . '/info'), filesize($workdir . '/info')))); //Расшифровываем исходный файл и сохраняем его используя информацию из описания file_put_contents($filename = $workdir . '/../' . $finfo->name, $rsa->decrypt(file_get_contents($workdir . '/file'), $finfo->size)); // Удаляем временные файлы unlink($workdir . '/file'); unlink($workdir . '/info'); rmdir($workdir); return $filename; }