GnuPG 生成公钥/私钥对,其中公钥和私钥相同且没有区别

GnuPG 生成公钥/私钥对,其中公钥和私钥相同且没有区别

我想生成 GnuPG 公钥私钥对。我有gpg但尚未gpg2安装。所以我进入终端并执行以下操作:

gpg --gen-key

输出:

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)

我选择了1输出:

What keysize do you want? (2048) 

我选择了4096输出:

Key is valid for? (0)

我选择了0 输出:

You need a user ID to identify your key; 
the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Name Title (some comment) <[email protected]>"

Real name: My Name
Email address: [email protected]
Comment: comment
You selected this USER-ID:
"My Name (comment) <[email protected]>"

输出:

You need a Passphrase to protect your secret key.

我给出了密码输出:

gpg: key XXXXXXXL marked as ultimately trusted
public and secret key created and signed.

pub   ABCDE/XXXXXXXL 2016-06-09
Key fingerprint = XXXX XXXX XXXX XXXX XXXX  XXXX XXXX XXXX XXXX XXXXL
uid                  My Name (comment) <[email protected]>
sub   ABCDE/XXXXXXXM 2016-06-09

我在我的 中添加了以下行~/.profile

export GPGKEY=XXXXXXXM

然后我找到了它

killall -q gpg-agent
eval $(gpg-agent --daemon)
export GPGKEY=XXXXXXXM

接下来我对其进行了加密:

gpg --cert-digest-algo=SHA256 --edit-key XXXXXXXM

输出:

Secret key is available.

pub   ABCDE/XXXXXXXM  created: 2016-06-09  expires: never       usage: SC  
                     trust: ultimate      validity: ultimate
[ultimate] (1). My Name (comment) <[email protected]>

Command> 

我做到了

addkey

输出:

Please select what kind of key you want:
   (2) DSA (sign only)
   (4) Elgamal (encrypt only)
   (5) RSA (sign only)
   (6) RSA (encrypt only)

我选择了6输出:

What keysize do you want? (2048)

我选择了4096输出:

Key is valid for? (0)

我选择了0 输出:

pub   ABCDE/XXXXXXXL  created: 2016-06-09  expires: never       usage: SC  
                     trust: ultimate      validity: ultimate
sub   ABCDE/XXXXXXXM created: 2016-06-09  expires: never       
sub   ABCDE/XXXXXXXN created: 2016-06-09  expires: never       usage: E   

[ultimate] (1). My Name (comment) <[email protected]>
Command> 

我做到了:

save

接下来我做了:

gpg --list-keys

这是我的示例输出:

pub   ABCDE/XXXXXXXL 2016-06-09
uid                  My Name (comment) <[email protected]>
sub   ABCDE/XXXXXXXM 2016-06-09
sub   ABCDE/XXXXXXXN 2016-06-10

但是当我这样做

`gpg --list-secret-keys`

我得到了相同的输出,只是 sec 代替了 pub:

sec   ABCDE/XXXXXXXL 2016-06-09
uid                  My Name (comment) <[email protected]>
sub   ABCDE/XXXXXXXM 2016-06-09
sub   ABCDE/XXXXXXXN 2016-06-10

我知道后面的部分pub ABCDE/是公钥,后面的部分sec ABCDE/是私钥。所以简而言之,我的公钥和私钥是相同的。

另一个奇怪的情况是,这里有三行以 开头ABCDE,但组合必须有所不同。

我如何获得单独的公钥和私钥?

答案1

我知道后面的部分pub ABCDE/是公钥,后面的部分sec ABCDE/是私钥。

您把算法标识字段与密钥 ID 混淆了。

sec   ABCDE/XXXXXXXL 2016-06-09
uid                  My Name (comment) <[email protected]>
sub   ABCDE/XXXXXXXM 2016-06-09
sub   ABCDE/XXXXXXXN 2016-06-10

您一直隐藏的字段ABCDE永远不可能是ABCDE。此字段保存算法和密钥大小标识符,例如R40964096 位 RSA 密钥。预计它会保存相同算法和密钥大小的相同信息。D1024表示 1024 位 DSA 密钥,等等。

(短)密钥 ID 是在后面斜线/——并且看一下问题,无论如何,它似乎已经有所不同了。

我如何获得单独的公钥和私钥?

您已经拥有了。已生成三对公钥/私钥,每对都是唯一的。没有私钥 ID,在 OpenPGP 中,您始终引用公钥(因为密钥总是成对出现)。

答案2

最后我终于解决了我的问题。尽管方法不同。

我安装了 thunderbird,为我的电子邮件地址创建了一个帐户。接下来我安装了 enigmail 扩展。从 enigmail 安装向导中,我为我的帐户创建了密钥对和一个撤销证书。

但问题仍然没有解决。我进入 enigmail 密钥管理,然后右键单击我的密钥并选择上传到公钥服务器。但错误不断出现。这是因为 enigmail 无法将密钥添加到我信任的密钥环中。

因此,我再次右键单击我的密钥并选择导出密钥,然后启用私钥导出并单击确定。假设我已将输出文件命名为 mykey-pub-sec.asc

接下来我进入终端并输入:

cd /path/to/the/saved/file
gpg --allow-secret-key-import --import mykey-pub-sec.asc
gpg --keyserver keyserver.ubuntu.com --send-key $GPGKEY

这里我用密钥 ID 替换了 $GPGKEY

就这样,任务完成了

相关内容