2012-01-08 1 views
2

Я пишу веб-приложение для хранения файлов в зашифрованном виде, но которое впоследствии может быть расшифровано в среде, отличной от php. Итак, скажем, пользователь загрузил файл с именем doc.pdf. Затем он зашифровывается и хранится на сервере в зашифрованном виде. Затем пользователь может загрузить зашифрованный файл и расшифровать его в своей системе.Эффективный метод для выполнения внешних программ в PHP?

Поскольку файлы, зашифрованные с использованием расширения mcrypt php, не переносятся, я решил написать программу в c с именем «encrypt». Тогда я призываю его в PHP:

$return_var=exec("encrypt $file_path $key"); 

Теперь еще один метод, который я думал о том, чтобы создать сервер шифрования, который в основном обертка вокруг программы шифрования с возможностью прослушивания запросов через сокеты. Поэтому давайте скажем, что php-скрипт теперь сделает запрос к этой программе, предоставляя имя файла и ключ для шифрования.

Я думал, что это может быть более гибким подходом, поскольку загрузка процесса шифрования может быть легко скорректирована, поместив программу сервера шифрования на другой компьютер.

Теперь, мой вопрос в том, какой из двух подходов эффективен (с точки зрения скорости, обработки большого количества клиентов и т. Д.)?

+1

Это действительно окупится, если вы сможете передавать входящие данные на то, что выполняет шифрование, а затем напрямую записывать его на диск. Обработка файлов, как если бы это пакетный процесс, будет намного менее эффективна, хотя бы потому, что вам придется загружать данные в память на Х количество раз и, возможно, даже с диска (что также потенциально небезопасно). –

ответ

1

Большая часть процесса шифрования будет потрачена на выполнение симметричного шифрования, например. AES. AES - и большинство криптографических шифров - относительно быстр. Существует много шансов, что вы будете ожидать ввода-вывода, а не части шифрования. Создание серверного приложения для этого почти наверняка излишне. Сначала я пошлю локальное приложение и только вернусь к тому, что в основном будет оптимизацией позже, если это действительно необходимо.

+0

Я согласен с u, но позволяет сказать, что на моем основном сервере запущены сервер веб-сервера и сервера баз данных, тогда выполнение шифрования на том же сервере, вероятно, увеличит нагрузку. Не лучше ли использовать серверное приложение. В любом случае I/O может быть оптимизирован на стороне сервера, если использовать высокоскоростное соединение. Я ошибаюсь ? btw thanx для ввода – tnx1991

+0

Я согласен с @owlstead. возможно, это было бы лучшим решением для написания этого в PHP, а затем для кластера вашего приложения.(т. е. переход в облако) – Kaii

+0

@ Kail Да, кластеризация приложения PHP (опять же, если потребуется) также будет моим решением. Единственная причина, по которой я хотел бы создать специализированный сервер, - это архитектурные или охранные цели (с минимальным сохранением ключа и доступностью), а не только по соображениям производительности. Но я бы начал с его работы (создания некоторых инструментов CLI), а затем украсить его и работать оттуда. –

0

он может работать лучше, если вы сделаете шифрование на PHP без выполнения внешней программы, которая вызывает очень большие накладные расходы.

Посмотрите на расширение Mcrypt:

http://de2.php.net/manual/en/mcrypt.examples.php

и просто написать полученную строку в файл.

+0

Я изначально думал об этом и даже реализовал его. Но при расшифровке файла с помощью программы c он просто не работал. Я много искал и обнаружил, что шифрование с использованием расширения php mcrypt не переносится. – tnx1991

+0

переносится - возможно, вы использовали несовместимые шифры при шифровании и расшифровке. Когда вы правильно введете все параметры шифрования, вы можете зашифровать данные на любом другом языке. на самом деле, mcrypt - это всего лишь оболочка для функций C. – Kaii

+0

Хорошо, если вы скажете так, я снова рассмотрю свою реализацию. thanx – tnx1991

0

я бы просто по причинам документов просто ZIP/сжимать файлы с помощью пароля, и сохранить этот пароль, сохраненный для пользователей скачать и т.д.

Таким образом, пользователю не нужно никаких инструментов дешифрования на их конце и защита шифрования/zip уже выполнена для вас.

Я не понимаю, о чем вы просите, но я бы пошел таким образом, чтобы не просто повторно изобретать колесо и все равно добиваться того же результата, защищенного файла.

+0

На самом деле мое требование немного сложное, мне нужно использовать несколько алгоритмов шифрования, которые могут варьироваться от одного файла к другому. Более того, система не должна ограничиваться только документами. – tnx1991

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