通过单个命令创建用于文件加密的 PGP 密钥

通过单个命令创建用于文件加密的 PGP 密钥

我正在寻找一个单一的、非交互式的命令来生成可用于文件加密的 PGP 密钥。

根据gpg文档,我应该能够运行它来创建一个能够加密的密钥:

gpg --batch --passphrase '' --yes --default-new-key-algo ed25519 --quick-gen-key "<[email protected]>" default default

但是,当我用它来加密文件时,它说没有合适的公钥:

$ gpg --batch --encrypt --recipient "[email protected]" --trust-model always --output README.md.gpg README.md
gpg: error retrieving '[email protected]' via Local: Unusable public key
gpg: error retrieving '[email protected]' via WKD: No data
gpg: [email protected]: skipped: No data
gpg: README.md: encryption failed: No data

我觉得这是因为没有创建加密子密钥,但我不确定如何根据文档让命令工作。

答案1

你不能用ed25519算法来加密数据(这不是密码),它只是一个数字签名方案对您进行签名或验证(SSH例如)。

在公钥密码学中,爱德华曲线数字签名算法(EdDSA)是一种使用基于扭曲爱德华曲线的 Schnorr 签名变体的数字签名方案。它旨在比现有的数字签名方案更快,同时又不牺牲安全性。

参考这里

然而,你可以用它作为主键符号其他子密钥或数据(例如您的电子邮件)。对于加密密码,我建议您RSA使用 4096 位以确保安全。在您的情况下,生成主密钥 + 子密钥的命令如下:

gpg --batch --full-gen-key <<EOF
Key-Type: EDDSA
Key-Curve: ed25519
Key-Usage: sign
Subkey-Type: RSA
Subkey-Length: 4096
Subkey-Usage: encrypt
Name-Real: Hello Example
Name-Email: [email protected]
Expire-Date: 0
Passphrase: ""
EOF

然后您可以使用以下命令加密文件:

gpg --out file.gpg --encrypt --recipient [email protected] file

顺便说一句,通常,您需要使用其他人的公钥加密文件,并使用您的私钥进行签名。

笔记 :输入空密码显然不是一个好主意。如果有人获取了您的私钥,您将失去数据的完全安全性,因为您的私钥没有密钥保护。此人可以解密所有用您的公钥加密的数据但是也 通过使用您的私钥签名来假装您。密码是重大保护

相关内容