gpt4 book ai didi

php - 检查输入的公钥是否是有效的 OpenPGP key

转载 作者:搜寻专家 更新时间:2023-10-31 21:27:00 24 4
gpt4 key购买 nike

我正在使用 PHP 中的 GnuPG 类。我在导入有效公钥时没有遇到任何问题,但如果我尝试随机导入一些明显不是公钥的“测试”之类的东西,我会收到错误 502 错误网关。我在 PHP 文档中看到 gnupg_keyinfo 显示了介绍 key 环中存储的名称的信息。我在互联网上搜索了一下,但没有找到一种方法来检查输入的公钥格式是否正确。我正在使用以下代码:

<?php
putenv('GNUPGHOME=/home/kevin/.gnupg');
$gpg = '/usr/bin/gpg';
$gpg = new gnupg();
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);

if(isset($_POST['2fa'])){
try {
$key = $_POST['new_pgp'];
$retVal = $gpg->import($key);
echo $retVal['imported'] . ' key(s) imported.';
} catch (Exception $e) {
die('ERROR: ' . $e->getMessage());
}

}
?>
<html>
<body>
<form action="pgp.php" method="post">
<textarea name="new_pgp"></textarea><br>
<input type="submit" name="2fa" value="Send">
</form>
</body>
</html>

最佳答案

错误 502“Bad Gateway”表示 Web 服务器与其背后的某些东西之间的连接被中断——例如,当将 nginx 与 php-fpm 一起使用时,会发生这种情况,这是通过另一个网络连接/套接字访问的。在请求进一步调试信息的评论中,您确认了猜测,并且还意识到 php 由于 segmentation fault 而崩溃。 ,这意味着应该访问了一些无效的内存位置。

这可能是因为一个错误(在这种情况下我不希望出现这种情况,因为无效 key 并不是一些完全令人惊讶的输入,没有人会测试)或者因为编译版本并不真正适合在一起。你解释说你自己构建了一些部分。

调试它很麻烦,通常需要花费数小时,您需要附加调试器并意识到出了什么问题。如果有机会,请尝试从您选择的包管理器中安装所有内容,不要使用不同的源,如 PECL 和您的打包器管理器,以防止出现问题。在 Debian 中(很可能还有 Ubuntu 和其他发行版,我没有验证)像 php5-gnupg 这样的包应该可用:

$ apt-cache show php5-gnupg
Package: php5-gnupg
Source: php-gnupg
Version: 1.3.6-1
Installed-Size: 84
Maintainer: Debian PHP PECL Maintainers <pkg-php-pecl@lists.alioth.debian.org>
Architecture: amd64
Depends: phpapi-20131226, php5-common (>= 4.4), libc6 (>= 2.4), libgpgme11 (>= 1.2.0)
Description-en: wrapper around the gpgme library
This extension provides methods to interact with gnupg.
[snip]

关于php - 检查输入的公钥是否是有效的 OpenPGP key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34557651/

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