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