我收到了一个用我生成的公钥加密的文件,但我无法解密它。
脚步:
gpg --gen-key
默认选项gpg --export -a <email> > pub.key
- 发送了 pub.key
- 收到加密文件
cat <file> | gpg
错误:
$ cat cred.gpg | gpg
gpg: key 71980D35: secret key without public key - skipped
gpg: encrypted with RSA key, ID 0D54A10A
gpg: decryption failed: secret key not available
但是,密钥确实存在于我的密钥环中,并且我从中生成的公钥与我发送给同事的 pub.key 的指纹相匹配。
$ gpg --list-secret-keys
/home/jcope/.gnupg/secring.gpg
------------------------------
sec 2048R/71980D35 2016-03-04
uid me <email>
ssb 2048R/0D54A10A 2016-03-04
检查指纹
$ gpg --with-fingerprint pub.key
pub 2048R/AF0A97C5 2016-03-04 me <email>
Key fingerprint = 17A4 63BF 5A7D D3B2 C10F 15C0 EDD6 4D8A AF0A 97C5
sub 2048R/1103CA7C 2016-03-04
$ gpg --fingerprint | grep 17a4 -i
Key fingerprint = 17A4 63BF 5A7D D3B2 C10F 15C0 EDD6 4D8A AF0A 97C5
我是一个 gpg 新手,不知道为什么这不起作用。这似乎是最标准的操作。
答案1
请注意错误消息:它并没有说密钥丢失(实际上没有),而是说公共密钥丢失。
gpg: key 71980D35:
没有公钥的秘密密钥- skipped
在 RSA 中,一些数字(d、p、q、u)是私有的,而其他数字(n、e)是公共的。加密和签名验证只需要2个公众号,而解密和签名则需要全部6个数字。因此,对于后面的操作,您实际上需要密钥和公钥。
公钥是否被意外删除pubring
?
您可以尝试重新导入公钥。由于公钥是广泛分发的密钥,因此应该很容易重新获取它的副本。