首页 > 解决方案 > Gnupg 不会在 php 中解密文件

问题描述

我尝试使用Gnupgphp 解密我的加密文件(包含多个文件的 zip 存档),但它不断返回 false。没有异常或错误消息。这是加密:

 $gpg = gnupg_init();
 gnupg_seterrormode($gpg, GNUPG_ERROR_EXCEPTION);
 // public key
 $publicKey = file_get_contents('pubkey.pub');
 $key = gnupg_import($gpg, $publicKey);
 gnupg_addencryptkey($gpg, $key['fingerprint']);
 // zip file
 $zip = file_get_contents('myzip.zip');
 $encryptedFile = gnupg_encrypt($gpg, $zip);
 //save encrypted file
 file_put_contents('myzip.zip.gpg', $encryptedFile);

这是解密:

$gpg = gnupg_init();

$privateKey = file_get_contents('private.asc');
$key = gnupg_import($gpg, $privateKey);

gnupg_adddecryptkey($gpg, $key['fingerprint'], '12345');
$file = file_get_contents('myzip.zip.gpg');
$content = gnupg_decrypt($gpg, $file); // <- always returns false

我试图用在线工具解密文件。起初我试图只解密 1 个文本文件并且它有效(它显示了文件的内容)。我也尝试解密 zip 存档

在此处输入图像描述

但每次我尝试用gnupg_decryptphp 解密它时,它都会返回 false。我究竟做错了什么?

标签: phpencryptioncryptographygnupg

解决方案


问题出在gnupg版本中。我灌输了gpg2,它奏效了。


推荐阅读