编程语言
首页 > 编程语言> > PHP gnupg enrypt有效,但不解密

PHP gnupg enrypt有效,但不解密

作者:互联网

我即将使用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稳定

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

有没有人遇到过这个问题?我没有想法.
先感谢您.

解决方法:

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

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

标签:php,encryption,gnupg,gpgme
来源: https://codeday.me/bug/20190701/1348435.html