1

我完全被 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)

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

这些方法不兼容吗,我必须使用不同的应用程序吗?

我很感激我能得到的每一个小小的帮助。非常感谢!

PS PHP 使用 gnupg GPGme 版本 1.4.2 扩展版本 1.3.3-dev 编译

4

1 回答 1

1

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

字符串 gnupg_decrypt ( 资源 $identifier , 字符串 $text )

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

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

于 2013-07-26T12:33:43.153 回答