Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中,使用gpupg\u解密永远不会完成_Php_Encryption_Gnupg_Gpgme - Fatal编程技术网

在PHP中,使用gpupg\u解密永远不会完成

在PHP中,使用gpupg\u解密永远不会完成,php,encryption,gnupg,gpgme,Php,Encryption,Gnupg,Gpgme,我正在使用pecl的gnupg PHP模块。明确地: gpgme-devel 1.1.8 gnupg模块1.3.3 加密工作正常,而且速度很快。在命令行使用gpg解密速度很快。当我尝试从PHP解密时,页面从未加载,甚至在调用解密之前的消息也不会打印 <?php error_reporting(E_ALL); ini_set('display_errors', 1); putenv('GNUPGHOME=/var/www/.gnupg/'); $gpg = new gnupg(); $gpg

我正在使用pecl的gnupg PHP模块。明确地: gpgme-devel 1.1.8 gnupg模块1.3.3

加密工作正常,而且速度很快。在命令行使用gpg解密速度很快。当我尝试从PHP解密时,页面从未加载,甚至在调用解密之前的消息也不会打印

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
putenv('GNUPGHOME=/var/www/.gnupg/');
$gpg = new gnupg();
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);

$key_finger_print = 'XXXX'; // Censored for posting...
$phrase = 'XXXX'; // Censored for posting...
$message = 'XXX'; // Censored for posting...

try
{
  $gpg->adddecryptkey($key_finger_print,$phrase);
  $message = $gpg->decrypt($message)
}
catch(Exception $e)
{
  echo 'ERROR: ' . $e->getMessage();
}
?>

日志中未显示或显示任何错误


Edit:因此,从命令行而不是通过apache运行相同的脚本会导致gpg代理提示我输入密码短语,即使它是在库调用中提供的。

我假设您没有从web服务器获得任何东西。您是否检查过gnupg是否加载在web服务器的php.ini中,而不仅仅是加载在CLI中。。。。使用cli,它会提示我输入密码短语,即使它已提供给库。这表明密码错误。重新确认它是正确的(并确保没有从PDF文档或类似文件中复制任何奇怪的字符)。如果您使用的是非ASCII字符(因此所有ASCII代码最多为128),请查看文件的编码,可能GnuPG接口在这里弄乱了一些东西。想法不错,但我相信它是正确的密码。此外,如果密码短语不正确,库应该抛出异常。密码短语在所有ASCII中都有,尽管将传递的密码短语更改为“我知道是错误的”会显示相同的行为。也许我必须生成一个没有密码短语的密钥?现在试试看…好吧,没有通行证它就行了。我更喜欢一个通行短语,所以我会留下这个空白;但至少我可以进入项目的下一部分。