php - Gnupg 不会在 php 中解密文件
问题描述
我尝试使用Gnupg
php 解密我的加密文件(包含多个文件的 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_decrypt
php 解密它时,它都会返回 false。我究竟做错了什么?
解决方案
问题出在gnupg
版本中。我灌输了gpg2
,它奏效了。
推荐阅读
- amazon-web-services - AWS CloudFront 2 个域在 1 个存储桶中的 2 个路径上具有 2 个 S3 源
- github - 使用 Github 忽略特定类型的更改
- python - numpy 数组使用 reshape 进行切片
- sql - 根据不在另一个表中的列对有效地创建行
- javascript - 优化通过长字符串工作的函数
- python - pySide2 QThread 多线程无法按预期工作
- json - Ansible 字典值未设置
- wordpress - 按自定义字段查询帖子
- r - 在并行运行中启用引用的任何方式
- pine-script - 如何在 pine 脚本中同时退出仓位并取消所有挂单