我正在尝试用PHP中的PGP(gnupg)来解密一个简单的消息。但是我总是得到这个错误:get_key failed。在堆栈溢出上,我看到很多人都有这个问题,但我不能解决它。我遵循了本教程,其中包括如何设置文件的权限:http://46dogs.blogspot.nl/2007/11/setting-up-gnupg-gpg-for-use-with-php.html
这就是我正在使用的脚本。我的PGP密钥不包含阶段短语:
<?php
putenv("GNUPGHOME=/home/user/.gnupg/");
$gpg = new gnupg();
$gpg -> addencryptkey("2ADA21BDC9C96556EA0758F04A935AE0010AE203");
$encrypted_text = $gpg -> encrypt("just a test");
//echo $encrypted_text;
$gpg = new gnupg();
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);
try{
$gpg -> adddecryptkey("2ADA21BDC9C96556EA0758F04A935AE0010AE203","");
$decrypted_text = $gpg -> decrypt($encrypted_text);
} catch (Exception $e) {
echo $e;
}
echo $decrypted_text;
?> 文件的权限(pubring.gpg、trustdb.gpg和secring.gpg)与教程完全相同(只有用户更改为nginx)。
加密部分起作用了。但是解密不起作用。
有人知道哪里出了问题吗?
我正在运行Centos和php5。
发布于 2019-02-17 18:40:08
线程中的代码很好,但请记住,您的nginx用户不同于user,nginx在访问其GnuPG键时会遇到问题,因为(默认情况下) /home/user/.gnupg是唯一所有者(user登录)可以访问的。最简单的方法是为nginx用户设置主目录,并为此创建自己的gnupg密钥。否则,只有当您使用user登录登录到终端时,才能成功运行此php (因为/home/user/.gnupg)
https://stackoverflow.com/questions/35705359
复制相似问题