gpg:当 sec 和 pub 密钥位于密钥环中时,“密钥不可用”

gpg:当 sec 和 pub 密钥位于密钥环中时,“密钥不可用”

我收到了一个用我生成的公钥加密的文件,但我无法解密它。

脚步:

  1. gpg --gen-key默认选项
  2. gpg --export -a <email> > pub.key
  3. 发送了 pub.key
  4. 收到加密文件
  5. 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

您可以尝试重新导入公钥。由于公钥是广泛分发的密钥,因此应该很容易重新获取它的副本。

相关内容