首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解算gnupg_keyinfo()的S输出

解算gnupg_keyinfo()的S输出
EN

Ask Ubuntu用户
提问于 2019-01-19 04:08:30
回答 1查看 454关注 0票数 0

我试图使用PHP在Ubuntu-18.04和PHP-7.2上的gnupg_*扩展来编写带有gpg加密数据的服务器和客户端PHP脚本。

发送欢迎消息后,服务器发送其公钥,并将其私钥设置为解密密钥,而客户端则将公钥设置为加密密钥。

这涉及到使用gnupg_keyinfo()和从复杂的信息数组中提取指纹。

信息的格式是不清楚的(至少对我来说!)

服务器脚本有:

代码语言:javascript
复制
    putenv('GNUPGHOME=/home/****/.gnupg');
    $gpg = gnupg_init();
    $info = gnupg_keyinfo($gpg, "username");
    $gpg_fingerprint = $info[0][0]["subkeys"]["fingerprint"];
    $reply = gnupg_adddecryptkey(gpg, $gpg_fingerprint, $gpg_passphrase);

客户端脚本有:

代码语言:javascript
复制
putenv('GNUPGHOME=/home/****/.gnupg');
$gpg = $gnupg_init();
$info = gnupg_keyinfo($gpg, $public_key);
$gpg_fingerprint = $info[0]["fingerprint"];
$reply = gnupg_addencryptkey($gpg, $gpg_fingerprint);

显然,"$gpg_fingerprint =“两行都错了,但它们应该是什么呢?如果指纹是唯一唯一能识别密钥的东西,那么为什么不更容易访问呢?还是有更简单的方法来做到这一点?

EN

回答 1

Ask Ubuntu用户

发布于 2019-01-22 00:42:17

我找到了一个获得指纹的剧本:

代码语言:javascript
复制
$gpg = gnupg_init();
$infos = gnupg_keyinfo($gpg, $email);
$countkeys = count($infos);
if($countkeys == 0) { print "No keys match $email\n"; exit; }
// choose which key if more than 1
$keychoice = 0;
if($countkeys > 1)
{   print "$email matches $countkeys keys\n";
    for($i=0; $i<$countkeys; $i++)
    {   $name = $infos[$i]['uids'][0]['name'];
        $comment = $infos[$i]['uids'][0]['comment'];
        $timestamp = $infos[$i]['subkeys'][0]['timestamp'];
        $fingerprint = $infos[$i]['subkeys'][0]['fingerprint'];
        print "$i: $name, $comment, $timestamp, $fingerprint)."\n";
    }
    loop2:
    print "n?: ";
    $keychoice = trim(fgets(STDIN));
    if(($keychoice < 0) || ($keychoice >= $countkeys)) { print "invalid choice\n"; goto loop2; }
}
// get fingerprint 
$fingerprint = $infos[$keychoice]['subkeys'][0]['fingerprint'];
print "Fingerprint: $fingerprint\n";   

由于gnupg_addencryptkey()需要指纹,因此将指纹隐藏在四维数组中似乎是一个gnupg设计问题。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1111041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档