Я собираюсь использовать 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
Кто-нибудь уже сталкивался с этой проблемой? У меня нет идей.
Заранее спасибо.
Вы пробовали вызывать gnupg_geterror()
после gnupg_adddecryptkey()
? Я подозреваю, что ваш закрытый ключ на самом деле не принимается. Я предполагаю, что это должно быть в кольце ключей GPG пользователя PHP? Кроме того, в нескольких коротких тестах, которые я выполнял, меня постоянно спрашивали о парольной фразе на терминале, но это могло быть из-за моего paranoid gpg config (я полностью отключаю кеширование парольной фразы).
Другой способ отловить ошибки — установить gnupg_seterrormode()
в ERROR_EXCEPTION
или похоже, чтобы увидеть, что на самом деле происходит …
Других решений пока нет …