Encryption

gpg:當 sec 和 pub 密鑰在密鑰環中時,“密鑰不可用”

  • December 7, 2018

我收到了一個用我生成的公鑰加密的文件,但我無法解密。

腳步:

  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 新手,不知道為什麼這不起作用。這似乎是最標準的操作。

請注意錯誤消息:它不是說缺少密鑰(不是),而是說缺少公鑰。

gpg: key 71980D35:沒有公鑰的密鑰- skipped

在 RSA 中,一些數字 (d, p, q, u) 是私有的,而另一些 (n, e) 是公共的。加密和簽名驗證只需要 2 個公眾號,而解密和簽名需要全部 6 個公眾號。因此,對於後面的操作,您實際上需要密鑰和公鑰。

公鑰是否pubring被意外刪除了?

您可以嘗試重新導入公鑰。由於公鑰是廣泛分佈的公鑰,因此應該很容易重新獲得它的副本。

引用自:https://unix.stackexchange.com/questions/267844