使用gpg4win加密后用PHP gnupg解密文件

时间:2013-07-22 13:42:09

标签: php gpgpu openpgp

我完全陷入了pgp问题,但我认为这更符合逻辑而不是技术问题 - 无论如何,我不明白它。

目标是使用gpg4win(www.gpg4win.de/index.html)加密文件并使用PHP(gnupg)解密。

我做的第一件事是,我用gpg4win创建了一个证书,设置了密码并加密了一个简单的文本文件(ASCII)。然后我上传文件并尝试使用以下代码解密它:

$content = file_get_contents("some-test-data.asc");
$gpg = new gnupg();
$gpg -> adddecryptkey("MYFINGERPRINT","my.pass.phrase");
$plain = $gpg -> decrypt($content);
var_dump($plain);

结果是: 布尔(假)

我做错了什么?我尝试了不同的代码和建议,但总是以bool(false)结束。

这些方法是否不兼容,我是否需要使用其他应用程序?

我感谢我能得到的每一点帮助。非常感谢!

P.S。 PHP是用gnupg编译的 GPGme版本1.4.2 扩展版本1.3.3-dev

1 个答案:

答案 0 :(得分:1)

问题解决了。如果有人遇到同样的麻烦,那是因为PHP文档滞后:

string gnupg_decrypt(resource $ identifier,string $ text)

如果在评论部分找到以下评论: 从gnupg版本2开始,无法再传递普通密码。该参数被简单地忽略。相反,如果php在cli模式下运行,将启动pinentry应用程序。在cgi或apache模式下,打开密钥将失败。 最简单的解决方案是使用没有密码的密钥。

所以我创建了一个没有密码的新密钥,一切正常。