Шифрование с помощью GPG с использованием PHP - PullRequest
0 голосов
/ 13 октября 2011

Мне нужна помощь в шифровании файлов в PHP с использованием GPG. Я провел некоторое исследование, но пока не могу найти решение.

Использование GPG в командной строке работает отлично, но когда я пытаюсь из PHP, я получаю возвращаемое значение 2. Я также попытался передать «--yes - always-trust» в качестве дополнительных переключателей для команды, как это было предложено в одном из ответов на SO, но без радости.

Я пытался использовать встроенную в PHP функцию gnupg - все примеры, которые я нашел, показывают, как шифровать строки, а не файлы. чтение файла как строки не будет работать для меня, потому что я работаю с большими файлами размером до 15 МБ.

Мне нужна помощь!

Сведения об окружающей среде

OS: Windows 7
PHP installation: WAMP Server 2.1

Код

$path = "c:\wamp\www";
$recipient = "Test user";
$encrypted_file = "c:\wamp\www\test.txt.gpg";
$decrypted_file = "c:\wamp\www\decrypted_test.txt";
$plain_file = "c:\wamp\www\test.txt";

exec('gpg --homedir $path --recipient $recipient --output $encrypted_file --encrypt $plain_file --yes --always-trust', $answer, $rtn);

var_dump($answer);
var_dump($rtn);
echo "<br />ANSWER: ".$answer;
echo "<br />RTN: ".$rtn;

выход

array(0) { } int(2) 
ANSWER: Array
RTN: 2
PHP User: nt authority\system

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Попробуйте изменить

exec('gpg --homedir $path --recipient $recipient --output $encrypted_file --encrypt                     $plain_file --yes --always-trust', $answer, $rtn);

Для

exec("gpg --homedir $path --recipient $recipient --output $encrypted_file --encrypt                     $plain_file --yes --always-trust", $answer, $rtn);

Обратите внимание, что я изменил одинарные кавычки на двойные

http://php.net/manual/en/language.types.string.php

0 голосов
/ 13 октября 2011

Вы смешиваете использование одинарных и двойных кавычек.

$path = 'c:\wamp\www';
$recipient = 'Test user';
$encrypted_file = 'c:\wamp\www\test.txt.gpg';
$decrypted_file = 'c:\wamp\www\decrypted_test.txt';
$plain_file = 'c:\wamp\www\test.txt';

И в этой строке:

exec("C:\\Wamp\\WWW\\gpg --homedir $path --recipient $recipient --output $encrypted_file --encrypt                     $plain_file --yes --always-trust", $answer, $rtn);

Используйте двойные кавычки, когда строка должна быть проанализированаPHP (обратите внимание на символы Escape);используйте одинарную кавычку, когда строку не нужно анализировать.

...