Encryption
gpg:當 sec 和 pub 密鑰在密鑰環中時,“密鑰不可用”
我收到了一個用我生成的公鑰加密的文件,但我無法解密。
腳步:
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 新手,不知道為什麼這不起作用。這似乎是最標準的操作。
請注意錯誤消息:它不是說缺少密鑰(不是),而是說缺少公鑰。
gpg: key 71980D35:
沒有公鑰的密鑰- skipped
在 RSA 中,一些數字 (d, p, q, u) 是私有的,而另一些 (n, e) 是公共的。加密和簽名驗證只需要 2 個公眾號,而解密和簽名需要全部 6 個公眾號。因此,對於後面的操作,您實際上需要密鑰和公鑰。
公鑰是否
pubring
被意外刪除了?您可以嘗試重新導入公鑰。由於公鑰是廣泛分佈的公鑰,因此應該很容易重新獲得它的副本。