如何使用 gnupg 和 php 加密文件?
How do I encrypt a file with gnupg and php?
我不是 PGP 专家并且 php 不是我的第一语言,所以我在使用 gnupg 加密文件时遇到了一些问题。我可以让它很好地加密字符串。
如果我使用 PGPTool (windows) 加密我的文件,然后在文本编辑器中打开它,它看起来像二进制数据...
…]/…D2Øþ3EaÚj'ƒ‚Ì
4aœ¶è[Šæ³7=q [Ûµ|<j‘«™yÅʧÊ[¥å¾•§Ù³,–rnÃƦ⅖iüïÛµèCŠ
如果我读入文件并使用 gnupg 对其进行加密,我会得到一个纯文本结果,就好像要将其粘贴到电子邮件中一样。
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.22 (GNU/Linux)
hQMOAx1dL4VEMtgUEAv/cOuJDBZ8FIYk7kqsh2vOvW2WRUvOUi54xm1LPGxLPiMS
我的问题是,我需要将其作为第一个选项输出以发送给特定客户端。有没有办法让 gnupg 和 php 做到这一点?
参考 PHP-联机帮助页 (https://www.php.net/manual/en/function.gnupg-setarmor.php),默认 输出是一个包含 base64 编码数据的文本文件:
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.22 (GNU/Linux)
hQMOAx1dL4VEMtgUEAv/cOuJDBZ8FIYk7kqsh2vOvW2WRUvOUi54xm1LPGxLPiMS
...
使用 gnupg-setarmor 函数,您可以将输出设置为二进制输出:
gnupg_setarmor($res,0);
完整代码如下:
<?php
// init
$res = gnupg_init();
// # add this line
gnupg_setarmor($res,0); // deactivate default armored output
gnupg_addencryptkey($res,"8660281B6051D071D94B5B230549F9DC851566DC");
$enc = gnupg_encrypt($res, "just a test");
echo $enc;
?>
我不是 PGP 专家并且 php 不是我的第一语言,所以我在使用 gnupg 加密文件时遇到了一些问题。我可以让它很好地加密字符串。
如果我使用 PGPTool (windows) 加密我的文件,然后在文本编辑器中打开它,它看起来像二进制数据...
…]/…D2Øþ3EaÚj'ƒ‚Ì
4aœ¶è[Šæ³7=q [Ûµ|<j‘«™yÅʧÊ[¥å¾•§Ù³,–rnÃƦ⅖iüïÛµèCŠ
如果我读入文件并使用 gnupg 对其进行加密,我会得到一个纯文本结果,就好像要将其粘贴到电子邮件中一样。
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.22 (GNU/Linux)
hQMOAx1dL4VEMtgUEAv/cOuJDBZ8FIYk7kqsh2vOvW2WRUvOUi54xm1LPGxLPiMS
我的问题是,我需要将其作为第一个选项输出以发送给特定客户端。有没有办法让 gnupg 和 php 做到这一点?
参考 PHP-联机帮助页 (https://www.php.net/manual/en/function.gnupg-setarmor.php),默认 输出是一个包含 base64 编码数据的文本文件:
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.22 (GNU/Linux)
hQMOAx1dL4VEMtgUEAv/cOuJDBZ8FIYk7kqsh2vOvW2WRUvOUi54xm1LPGxLPiMS
...
使用 gnupg-setarmor 函数,您可以将输出设置为二进制输出:
gnupg_setarmor($res,0);
完整代码如下:
<?php
// init
$res = gnupg_init();
// # add this line
gnupg_setarmor($res,0); // deactivate default armored output
gnupg_addencryptkey($res,"8660281B6051D071D94B5B230549F9DC851566DC");
$enc = gnupg_encrypt($res, "just a test");
echo $enc;
?>