可以存在没有 UID 的 OpenPGP public 密钥吗?

Can an OpenPGP public key without UID exist?

下面的密钥有效吗?

gpg --list-keys命令列出了没有label/email的关键信息,我的意思是UID:

/home/XXXXXX/.gnupg/pubring.gpg
--------------------------------
pub   2048R/3BAAF156 2016-04-05
uid

它是有效的密钥吗?消息人士称他们正在使用 Oracle 融合中间件 pgp 生成密钥。

如何使用没有 UID 的密钥加密文件?

我说有一个空的 UID 是不常见的(如果不是无效的话)。例如,GPG 2.1.11 不允许我生成具有空 UID 的密钥:

export GNUPGHOME=$(mktemp -d) # use temporary dir; unset when done
gpg --batch --passphrase 'pass' --quick-gen-key ''

我得到:

gpg: Key generation failed: Invalid user ID

此外,gpg --edit-key不允许我删除最后一个uid

要回答您的第二个问题,您可以(尝试)使用该键使用它的 "key id",在您的情况下 3BAAF156

echo hello | gpg --encrypt --armor --recipient 3BAAF156

RFC 4880, OpenPGP does not require keys to have a UID attached. Anyway, the output you posted seems more like the key has an empty UID (which is not forbidden when reading section 5.11. User ID Packet (Tag 13))。您可以让 GnuPG 列出密钥由 运行 gpg --export 3BAAF156 | gpg --list-packets.

构造的所有单独的 OpenPGP 数据包

与 UID 相比,有更多的方式来处理密钥——实际上,特别是对于脚本和开发目的,指定固定密钥 ID 或更好的指纹是首选。您可以使用的短密钥 ID 是 3BAAF156(而不是邮件地址),但是 better use long key IDs instead.

短密钥ID示例,加密文件example.txt:

gpg --recipient 3BAAF156 --encrypt example.txt