如何从 GPG 密钥环导出数字 RSA 密钥 (d)

How to export the numeric RSA secret key (d) from a GPG keyring

我正在使用 GPG2 和这个命令来导出我的 GPG 密钥环:

$ gpg --export-secret-key | gpg --list-packets -vvv --debug 0xffff

这会打印(除其他外)RSA 密钥:

   :secret sub key packet:
        version 4, algo 1, created 1576011813, expires 0
        pkey[0]: ABD2...
        pkey[1]: 010001
        iter+salt S2K, algo: 7, SHA1 protection, hash: 2, salt: D476FD990128BDB1
        protect count: 3014656 (183)
        protect IV:  0c 7c 1a d8 ec e3 f0 d4 ac ba bf 46 2a 15 e4 cd
        skey[2]: [v4 protected]
        keyid: E8F5DC1127CAB70F

的输出
$ gpg --export-secret-key | pgpdump -i -l -m -p

是:

Old: Secret Subkey Packet(tag 7)(966 bytes)
        Ver 4 - new
        Public key creation time - Tue Dec 10 22:03:33 CET 2019
        Pub alg - RSA Encrypt or Sign(pub 1)
        RSA n(2048 bits) - ab d2 ...
        Sym alg - AES with 128-bit key(sym 7)
        Iterated and salted string-to-key(s2k 3):
                Hash alg - SHA1(hash 2)
                Salt - c2 a0 1f 8f 94 52 f0 a3 
                Count - 3014656(coded count 183)
        IV - 4c 28 ae 9d d6 77 68 f4 67 ce b3 17 4b cf 20 f6 
        Encrypted RSA d
        Encrypted RSA p
        Encrypted RSA q
        Encrypted RSA u
        Encrypted SHA1 hash

看起来pkey[0]npkey[1]e(0x010001 == 65537), skey[2]d。如何打印 d 的未加密数字(十六进制)值? (我知道密钥密码。)

请注意,我想获得未加密的实际 d 值,并且我对在另一台计算机上导入密钥不感兴趣 运行 GPG。

https://superuser.com/a/1012873 所示,使用 gpg --edit-key ... (passwd, Enter, old passphrase, 输入输入输入save输入) ,问题中的两个命令都打印 dpqu.

然后我可以用gpg --edit-key ...再次添加密码。