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