gpt4 book ai didi

php - 尽管使用了有效 key ,Gnupg 仍给出 "get_key failed"

转载 作者:行者123 更新时间:2023-12-05 07:19:03 25 4
gpt4 key购买 nike

我想将 PGP 加密集成到我的 Web 应用程序中,在寻找要使用的内容(扩展、库等)之后,我决定使用 php 的 gnupg 扩展。现在,我的一个桌面文件夹中确实有一个 PGP key ,我尝试将它的指纹用作 addencryptkey 的字符串,我收到的错误是 get_key failed我不明白为什么,我的 PGP key 是有效的。

关于SO有两个非常相似的问题:

php gnupg get_key failed error ,

gnupg get_key failed in php ,

基于这些,我更新了我的代码但没有成功,这是它目前的样子:

  putenv("GNUPGHOME=/home/user/Desktop/Keys/.gnupg/");

$pgp = new gnupg();

$pgp->addencryptkey("F0E2DF9C82ECE67935171F4939D8599A923820D9");
echo $pgp->geterror();

putenv 中指定的文件夹中,我将我的公钥保存在 .asc 文件中。我看不出真正的问题是什么,除非它只适用于存储在服务器上的 key ?

最佳答案

只是想分享我对这个问题的修复。鉴于这是关于该主题的最新问题之一,我认为最好在此处分享。

当时我能够很好地加密消息(带有 GNUPG PECL 扩展的 PHP 7.4)。

为了解决 get_key_failed 错误,在设置/导入我的 key 后,我将整个 .gnupg 目录复制到我的网络服务器的根目录 (/var/www/html在我的例子中)并更新了它的权限,以便网络服务器可以访问它。

putenv("GNUPGHOME=/var/www/html/.gnupg");

我原以为这会解决它,但是我在尝试解密消息时遇到了一个新错误:

Uncaught Exception: decrypt failed

我解决这个问题的唯一方法是确保我的 key 对没有有密码。对 PHP GNUPG 文档的一些评论建议无论如何忽略作为 adddecryptkey() 的第二个参数的密码。但是,在我的例子中,解密只适用于没有设置密码的私钥。

这适用于我的本地实例 (Ubuntu 18) 并且部署到运行 Amazon Linux 2 的 EC2 实例时。

关于php - 尽管使用了有效 key ,Gnupg 仍给出 "get_key failed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58043928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com