我正在尝试使用 GnuPG 解密文件,但是当使用以下命令时:
gpg --decrypt filename.gpg
我收到以下消息:
gpg: encrypted with RSA key, ID 3662FD5E
gpg: decryption failed: No secret key
我已经拥有用于加密文件的私钥,但我不知道如何指定它。解密时我可以包含任何选项来指向此密钥吗?
答案1
我已经拥有加密文件的私钥,但我不确定如何指定它。
我理解这是“我有一个包含私钥的文件,但不知道如何告诉 GnuPG 使用它”。
GnuPG 要求将密钥(公钥和私钥)存储在 GnuPG 密钥环中。这很简单,
gpg --import [keyfile]
之后,您应该能够按照您已经尝试过的方式解密文件。
答案2
bash-4.2$ gpg --import b_secret.key
gpg: key 23E7859B: already in secret keyring
gpg: Total number processed: 1
gpg: secret keys read: 1
gpg: secret keys unchanged: 1
bash-4.2$ gpg --decrypt b_txt.asc
gpg: key 23E7859B: secret key without public key - skipped
gpg: encrypted with RSA key, ID 04702E37
gpg: decryption failed: secret key not available
答案3
您无需在 gpg decrypt 命令中明确声明密钥。如果密钥对都是 Public和私钥——正如 Jens 所说,它存在于你正在解密的主机的密钥环上,GPG 将自动确定解密所需的密钥并提出密码挑战。
然而如果你想尝试所有(非缓存)键(也许你正在测试一个用多个密钥加密的文件),使用开关--try-all-secrets
将循环遍历密钥环上的所有密钥并依次尝试它们。即:
gpg -d --try-all-secrets test-gpg.txt.asc
HTH- 特伦斯