5

我即将使用gnupg加密和解密文件。奇怪的是,加密工作正常,但解密总是返回 false。

这是一个加密和解密内容的简单 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 stable

PHP版本: PHP 7.1.11-1+0~20171027135825.10+jessie~1.gbp2e638d

有人已经遇到过这个问题吗?我没主意了。先感谢您。

4

1 回答 1

2

你试过gnupg_geterror()之后调用gnupg_adddecryptkey()吗?我怀疑您的私钥实际上没有被接受。我认为它需要在 PHP 用户的 GPG 密钥环中?同样在我运行的几个简短测试中,我一直在终端上提示输入密码,但这可能是因为我偏执的 gpg 配置(我完全禁用了密码缓存)。

捕获错误的另一种方法是设置gnupg_seterrormode()ERROR_EXCEPTION或类似以查看实际发生的情况......

于 2017-11-28T08:53:43.673 回答