人类可读的gpg公钥转储


22

是否有某种工具可以以人类无法理解的方式写出GnuPG公钥的实际内容?我的意思是不仅是人类可以读取和键入的ascii装甲,还是真正将数据分解为用于加密部分的大十进制数字,用于UID的字符串等的东西?我真的很想看看里面有什么。

今天的实际应用:我有同一个人的两个密钥,它们是在同一日期创建的,但指纹不同。假设其中一个是通过某种转换从另一个创建的,可能是使用较新的软件将旧密钥导入到密钥交换中。我想看看实际发生了什么变化。也许只是指纹算法发生了变化,但也许还有更多。


在找到这个问题之前,我已经找到了所有建议的答案。不幸的是,这仍然令人难以理解,特别是当密钥具有许多签名时。我真的希望gpg2可以通过某种show-key命令轻松地提供此信息:-(
Bluehorn,

Answers:


20

尝试

gpg --list-packets --verbose < pubkey.asc

它不会转储关键数据,但会显示所有其他详细信息。要转储其他原始数据部分,您需要调试标志2,因此add --debug 0x02,这将以十六进制转储密钥和其他数据。这在GPG 1.2和1.4版中有效,但遗憾的是在2.0版中无效,因为出于某种原因未启用对转储bignum(MPI)数据的支持(请参阅DBG_MPI中的g10/parse-packet.c)。

也可以尝试pgpdump

pgpdump < pubkey.asc

看起来不错,但是它仍然忽略了一些数据:有些东西被缩写为[1024 bits]“ like”。我想看看那些。我知道你写的那些不包括在内。
MvG 2014年

1
找到它,调试标志2,已更新。
spuratic先生2014年

由于某种原因,该调试标志对我不起作用。它会在标记已启用的情况下打印一条消息,但不会打印调试信息。可能需要挖掘资源以找出原因……@grawity:pgpdump看起来很像我的想法,谢谢。您选择编辑现有答案而不发布新答案的任何特殊原因。毕竟,两者都是不同的建议,每个都有其优缺点,因此用户可能希望独立投票。
MvG 2014年

3
此调试标志用于MPI(bignum)调试(DBG_MPI),它按照GPG 1.2 / 1.4中的指示进行工作,但GPG 2.0.x(在中被注释掉g10/parse-packet.c)中不正确支持,旁边带有“ FIXME” ... @感谢您的提示pgpdump,看起来很有用。
spuratic先生2014年

4

在等待答案时,我阅读了RFC4880(OpenPGP),并想出了一些自己的代码来解析和打印导出的数据包流的相关部分。距离完成还很遥远,但对其他人可能有用,因此我也将其发布。现在,我看不出@grawity建议的pgpdump有什么好处,但是谁知道呢?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.