private function fileEncrypt($filename, $realname, RSA $rsa)
 {
     // Генерируем имя рабочей директории
     $workdir = sys_get_temp_dir() . '/' . md5(RSA::bcrand('0', '9999999999999999999999') . date('-Y-m-d-H-i-s'));
     mkdir($workdir);
     // Создаем рабочую директорию
     // Читаем файл
     $f = fopen($filename, 'rb');
     $file = fread($f, filesize($filename));
     fclose($f);
     // Шифруем файл
     $file = $rsa->encrypt($file);
     // Записываем файл в рабочую директорию
     file_put_contents($workdir . '/file', $file);
     // Генерируем информацию о зашифрованном файле
     $finfo = $rsa->encrypt(base64_encode(json_encode(['name' => $realname, 'size' => filesize($filename), 'signature' => '++++'], JSON_FORCE_OBJECT)));
     // Записываем зашифрованную информацию о файле
     file_put_contents($workdir . '/info', $finfo);
     // Сохраняем все в ZIP архив (зашифрованный файл и зашифрованный файл с описанием исходного файла)
     $zip = new \ZipArchive();
     $zipname = $workdir . '.zip';
     $zip->open($zipname, \ZipArchive::CREATE);
     $zip->addFile($workdir . '/file', 'file');
     $zip->addFile($workdir . '/info', 'info');
     $zip->close();
     $filename = $zipname;
     // Удаляем временные файлы
     unlink($workdir . '/file');
     unlink($workdir . '/info');
     rmdir($workdir);
     return $zipname;
 }