如何从 pgp 公钥生成 .asc 文件?

shi*_*ish 10 debian encryption gpg

据我所知,在 openpgp 中,您有一个可以锁定或隐藏在某处的私钥和一个可以与任何人自由共享的公钥。

现在我看到很多人附上 .asc 文件。如果我点击它,它会显示另一个人的公钥。

有一个 .asc 文件只是使用放置您的公钥然后将其重命名为类似 signature.asc 的东西,还是还涉及其他内容?.asc 文件似乎是一个存档文件(如 .rar 或 zip 文件)

$ cat shirish-public-key.txt
-----BEGIN PGP SIGNATURE-----
publickeystring$
-----END PGP SIGNATURE-----
Run Code Online (Sandbox Code Playgroud)

如何将其制作/转换为 .asc 文件?

我只能做——

$ mv shirish-public-key.txt shirish.asc
Run Code Online (Sandbox Code Playgroud)

但我不知道这样做是否正确。

更新 - 我试过了,但没有用 :(

$ gpg --armor export shirish-public-key.txt > pubkey.asc
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
usage: gpg [options] [filename]
Run Code Online (Sandbox Code Playgroud)

更新 2 - 仍然不起作用 -

$ gpg --armor --export shirish-public-key.txt > pubkey.asc 
gpg: WARNING: nothing exported
Run Code Online (Sandbox Code Playgroud)

似乎无法弄清楚公钥在文本文件中。

更新 3 -

这是文件内容的样子

http://paste.debian.net/1022979/

但如果我跑 -

 $ gpg --import shirish-public-key.txt 
    gpg: invalid radix64 character 3A skipped
    gpg: invalid radix64 character 2E skipped
    gpg: invalid radix64 character 2E skipped
    gpg: invalid radix64 character 2E skipped
    gpg: invalid radix64 character 3A skipped
    gpg: invalid radix64 character 3A skipped
    gpg: invalid radix64 character 2E skipped
    gpg: CRC error; 1E6A49 - B36DCC
    gpg: [don't know]: invalid packet (ctb=55)
    gpg: read_block: read error: Invalid packet
    gpg: import from 'shirish-public-key.txt' failed: Invalid keyring
    gpg: Total number processed: 0
Run Code Online (Sandbox Code Playgroud)

似乎有什么地方不对劲。

FWIW gpg 是来自 Debian 测试的 2.2.5 版(我正在运行所有更新的测试)

$ gpg --version
gpg (GnuPG) 2.2.5
libgcrypt 1.8.2
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: /home/shirish/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
Run Code Online (Sandbox Code Playgroud)

Ste*_*itt 12

通常,.asc文件是密钥材料(或签名)的 ASCII 装甲表示。你shirish-public-key.txt看起来就是这样,所以如果你确定它包含正确的信息,你可以按照你的建议简单地重命名它。(我怀疑它是否包含您的公钥——应该以 开头-----BEGIN PGP PUBLIC KEY BLOCK-----。)如果一个文件包含“二进制”数据(我猜这就是你说它看起来像档案时的意思),它不是一个 ASCII 文件,并且通常不会以.asc扩展名命名。

要以这种格式导出您的密钥,从您的密钥环而不是现有文件(从而确保它包含正确的数据),运行

gpg --armor --export YOUR_FINGERPRINT > pubkey.asc
Run Code Online (Sandbox Code Playgroud)

为方便起见,文件通常以其密钥 ID 命名;就我而言:

gpg --armor --export "79D9 C58C 50D6 B5AA 65D5  30C1 7597 78A9 A36B 494F" > 0x759778A9A36B494F.asc
Run Code Online (Sandbox Code Playgroud)

您可以使用多种选项来调整导出的数据;例如,--export-options export-minimal将从密钥中去除大部分签名,从而大大减少其大小(但也减少了它对关心信任网络的人的效用)。