是否有某种工具可以以人类可以理解的方式写出 GnuPG 公钥的实际内容?我的意思是,不仅仅是人类可以读取和输入的 ascii-armor,还有某种东西可以将数据分解为加密部分的大十进制数字、UID 的字符串等等?我真的很想看看里面有什么。
今天的实际应用:我有两把来自同一个人的钥匙,创建日期相同,但指纹不同。假设其中一个是通过某种转换从另一个创建的,可能是通过使用最新软件将旧钥匙导入钥匙串。我想看看到底发生了什么变化。也许只是指纹算法发生了变化,但也许还有更多变化。
答案1
尝试
gpg --list-packets --verbose < pubkey.asc
它不会转储密钥数据,但会显示所有其他详细信息。要转储其他原始数据部分,您需要调试标志 2,因此添加--debug 0x02
,这将以十六进制转储密钥和其他数据。这在 GPG 版本 1.2 和 1.4 中有效,但遗憾的是在 2.0 中无效,因为出于某种原因未启用对转储 bignum (MPI) 数据的支持(请参阅DBG_MPI
)g10/parse-packet.c
。
也可以尝试转储:
pgpdump < pubkey.asc
答案2
在等待答案的时候,我读了RFC4880(OpenPGP)并提出了我自己的一些代码解析并打印导出的数据包流的相关部分。远未完成,但可能对其他人有用,所以我也发布了这个。目前,我认为 @grawity 建议的 pgpdump 没什么好处,但谁知道呢……
答案3
我用过转储 它运行良好,并显示了良好的人性化输出。它尚未打印椭圆曲线密钥,但至少会告诉您它是 EC 密钥。如果您选择“转储文字”选项,它将显示实际密钥数据。
答案4
pgpdump 很好,另外还有sq packet dump
来自 sequoia 项目的,我觉得它的可读性更强:
sq packet dump /etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg
Public-Key Packet, old CTB, 525 bytes
Version: 4
Creation time: 2018-09-17 15:01:46 UTC
Pk algo: RSA
Pk size: 4096 bits
Fingerprint: F6ECB3762474EDA9D21B7022871920D1991BC93C
KeyID: 871920D1991BC93C
User ID Packet, old CTB, 66 bytes
Value: Ubuntu Archive Automatic Signing Key (2018) <[email protected]>
Signature Packet, old CTB, 568 bytes
Version: 4
Type: PositiveCertification
Pk algo: RSA
Hash algo: SHA512
Hashed area:
Signature creation time: 2018-09-17 15:01:46 UTC
Key flags: CS
Symmetric algo preferences: AES256, AES192, AES128, CAST5, TripleDES
Hash preferences: SHA256, SHA1, SHA384, SHA512, SHA224
Compression preferences: Zlib, BZip2, Zip
Features: MDC
Keyserver preferences: no modify
Unhashed area:
Issuer: 871920D1991BC93C
Digest prefix: 2C73
Level: 0 (signature over data)
Signature Packet, old CTB, 563 bytes
Version: 4
Type: GenericCertification
Pk algo: RSA
Hash algo: SHA512
Hashed area:
Issuer Fingerprint: 153F1C9EF1395FBF00352E8D0BFB847F3F272F5B
Signature creation time: 2018-09-17 15:12:03 UTC
Unhashed area:
Issuer: 0BFB847F3F272F5B
Digest prefix: 6E17
Level: 0 (signature over data)
回购位于https://gitlab.com/sequoia-pgp/sequoia,箱子位于https://lib.rs/crates/sequoia-sq),可以通过 Cargo 和许多优秀的包管理器安装 (Debian/Ubuntu/Arch/Fedora……)