GPG 备份私钥和公钥导出到文件

GPG backup private key

GPG (GNU Privacy Guard) 是一个用于加密和签名数据的开源工具, 广泛用于保护电子邮件通信、文件和数据的隐私。它实现了 OpenPGP 标准, 支持对称加密、非对称加密和数字签名。GPG 可以生成公钥和私钥对, 其中公钥用于加密数据, 私钥用于解密数据和签名消息。它广泛应用于保护敏感信息、防止身份伪造和确保数据完整性

创建 EdDSA 密钥 (Ed25519)

要创建一个 EdDSA (Ed25519) 密钥对, 可以使用 GPG 的 --expert 模式, 按照以下步骤生成

运行以下命令开始创建新密钥

$ gpg --expert --full-gen-key
gpg (GnuPG) 2.1.0; Copyright (C) 2014 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

在选择密钥类型时, 选择 ECC (sign only) (即 10)

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
   (7) DSA (set your own capabilities)
   (8) RSA (set your own capabilities)
   (9) ECC and ECC
  (10) ECC (sign only)
  (11) ECC (set your own capabilities)
Your selection? 10

选择椭圆曲线 Curve25519

Please select which elliptic curve you want:
   (1) Curve 25519
   (2) NIST P-256
   (3) NIST P-384
   (4) NIST P-521
   (5) Brainpool P-256
   (6) Brainpool P-384
   (7) Brainpool P-512
Your selection? 1

注意, GPG 会警告 Curve25519 尚未成为 OpenPGP 标准的一部分, 但你可以选择继续 (输入 y)

gpg: WARNING: Curve25519 is not yet part of the OpenPGP standard.
Use this curve anyway? (y/N) y

设置密钥的有效期。默认为 0, 表示密钥永不过期

Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

输入用户信息 (例如: 真实姓名、电子邮件等)

GnuPG needs to construct a user ID to identify your key.

Real name: Laura Poitras
Email address: laura@example.org
Comment:
You selected this USER-ID:
    "Laura Poitras <laura@example.org>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
[...]

完成后, 系统将生成 Ed25519 密钥, 并提供相关的指纹和密钥 ID

pub   ed25519/5C1AFC2A 2014-11-03
      Key fingerprint = ED85 4D98 5D8F 502F C6C5  FFB2 AA81 319E 5C1A FC2A
uid       [ultimate] Laura Poitras <laura@example.org>

列出你拥有的密钥

要查看本地所有的私钥和公钥, 可以使用以下命令

gpg --list-secret-keys --keyid-format=long
/Users/hubot/.gnupg/secring.gpg
------------------------------------
sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid                          Hubot
ssb   4096R/42B317FD4BA89E7A 2016-03-10

导出公钥

如果需要导出公钥, 可以使用以下命令

直接打印公钥

gpg --armor --export 3AA5C34371567BD2

保存到文件

gpg --armor --export 3AA5C34371567BD2 --output public.pgp

导出私钥

同样, 导出私钥可以使用以下命令

直接打印私钥

gpg --armor --export-secret-key 3AA5C34371567BD2

保存到文件

gpg --armor --export-secret-key 3AA5C34371567BD2 --output private.pgp

导出密钥并复制到另一台机器

若需要将私钥文件复制到另一台机器上, 可以使用以下命令

gpg --export-secret-key name > ~/my-key.asc

在另一台机器上, 可以通过以下命令导入密钥

gpg --import my-key.asc

原文

如何将GPG私钥和公钥导出到文件
Generating a new GPG key
How can I use GnuPG with ECDSA keys?
What’s new in GnuPG 2.1

最后更新于 2021-07-03
使用 Hugo 构建
主题 StackJimmy 设计