![GnuPG 生成公钥/私钥对,其中公钥和私钥相同且没有区别](https://linux22.com/image/883196/GnuPG%20%E7%94%9F%E6%88%90%E5%85%AC%E9%92%A5%2F%E7%A7%81%E9%92%A5%E5%AF%B9%EF%BC%8C%E5%85%B6%E4%B8%AD%E5%85%AC%E9%92%A5%E5%92%8C%E7%A7%81%E9%92%A5%E7%9B%B8%E5%90%8C%E4%B8%94%E6%B2%A1%E6%9C%89%E5%8C%BA%E5%88%AB.png)
我想生成 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
。此字段保存算法和密钥大小标识符,例如R4096
4096 位 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
就这样,任务完成了