以机器可读的格式获取 apt 的密钥 ID 和指纹

Naf*_*Kay 11 apt gpg

我正在尝试修补 puppetlabs-apt 中的一个问题,以启用密钥指纹作为标识符的使用,以确保某个密钥存在于其 40 位密钥指纹中。

我很难检查密钥是否存在,我需要一个输出以下内容的命令:

  • 密钥的 8 位 ID。
  • 密钥的 16 位 ID。
  • 密钥的 40 位 ID。

是否有一个apt-key命令可以用来输出这些值,每行一个,以便我可以解析输出并检查密钥是否存在?

der*_*ert 21

apt-key adv 将让您直接将选项传递给 GnuPG。

所以你可以做这样的事情来获得可解析的输出:

# apt-key adv --list-public-keys --with-fingerprint --with-colons 
?
fpr:::::::::126C0D24BD8A2942CC7DF8AC7638D0442B90D010:
pub:-:4096:1:9D6D8F6BC857C906:2014-11-21:2022-11-19::-:Debian Security Archive Automatic Signing Key (8/jessie) <ftpmaster@debian.org>::scSC:
fpr:::::::::D21169141CECD440F2EB8DDA9D6D8F6BC857C906:
?
Run Code Online (Sandbox Code Playgroud)

由于您只对指纹感兴趣(8 位和 16 位 ID 只是指纹的末尾),| grep ^fpr似乎会给您提供您关心的行。

  • @NaftuliTzviKay 指纹是加密衍生的哈希。再次散列它与仅仅截断它没有任何安全优势。此外,8 位数字和可能的 16 位数字太短而不能保证安全;您可以通过蛮力生成重复密钥。只有完整的散列是相当安全的。无法评论您的 python 代码是否按预期运行,因为我不知道 python ......但我猜是的。它只是最后 8 或 16 位十六进制数字。 (2认同)