шифрование — PHP gnupg enrypt работает, но не расшифровывает

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

Вот простой скрипт php, шифрующий и дешифрующий контент:

$content = 'test text';
putenv("GNUPGHOME=/PATH_TO_GPG_PATH");
$gpg = new gnupg();
$gpg->addencryptkey("FINGERPRINT");
$enc = $gpg->encrypt($content);

var_dump($enc);

$gpgD = new gnupg();
$gpgD->adddecryptkey("FINGERPRINT","PASSPHRASE");
$plain = $gpgD->decrypt($enc);
var_dump($plain);

Версии

Пакеты Debian

gpgv 1.4.18-7

libgpgme11: amd64 1.5.1-6

PECL

Состояние версии пакета
gnupg 1.4.0 стабильный

Версия PHP: PHP 7.1.11-1 + 0 ~ 20171027135825.10 + jessie ~ 1.gbp2e638d

Кто-нибудь уже сталкивался с этой проблемой? У меня нет идей.
Заранее спасибо.

3

Решение

Вы пробовали вызывать gnupg_geterror() после gnupg_adddecryptkey()? Я подозреваю, что ваш закрытый ключ на самом деле не принимается. Я предполагаю, что это должно быть в кольце ключей GPG пользователя PHP? Кроме того, в нескольких коротких тестах, которые я выполнял, меня постоянно спрашивали о парольной фразе на терминале, но это могло быть из-за моего paranoid gpg config (я полностью отключаю кеширование парольной фразы).

Другой способ отловить ошибки — установить gnupg_seterrormode() в ERROR_EXCEPTION или похоже, чтобы увидеть, что на самом деле происходит …

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]