Encryption
gpg 無法解鎖無密碼密鑰:“gpg:公鑰解密失敗:未提供密碼”
我有一個從舊 gpg 版本開始的 gpg 設置,當時我沒有使用密碼。當提示輸入時,我會直接輸入。我不確定這是否意味著密鑰未加密,或者是否使用空密碼加密。
無論如何,當我嘗試解密最近發送給我的東西時,gpg 需要訪問我的私鑰並提示我輸入密碼,但現在我不能再使用空密碼了。gpg 失敗:
$ gpg -d foo.asc (X dialog that prompts me for passphrase, I just press enter) gpg: public key decryption failed: No passphrase given gpg: decryption failed: No secret key
我希望能夠再次使用我的密鑰。我不介意從現在開始設置密碼,但我不知道如何:
$ gpg --passwd xxxxxxx@xxxxxxx.com (X dialog that prompts me for current passphrase, I just press enter) gpg: key xxxxxxxxxxxxxxxx/aaaaaaaaaaaaaaaa: error changing passphrase: No passphrase given gpg: key xxxxxxxxxxxxxxxx/bbbbbbbbbbbbbbbb: error changing passphrase: No passphrase given gpg: error changing the passphrase for 'xxxxxxx@xxxxxxx.com': No passphrase given
我在 openSUSE 15.0 上執行 gpg (GnuPG) 2.2.5 和 libgcrypt 1.8.2。
我通過使用具有密鑰的舊系統解決了這個問題。
- 我在空密碼輸入有效的舊系統上設置了一個新密碼。
- 導出舊系統私鑰並將其複製到新系統上
- 清理新系統的 gpg 狀態(將 .gnupg 移動到 .gnupg.bak)
- 導入非空密碼私鑰
這是我執行的命令:
# put a non-empty passphrase on current key me@old$ gpg --passwd xxxx@xxxx.com (leave empty on first prompt) (put a new non-empty passphrase on 2nd) (confirm new passphrase) # now we export it me@old$ gpg --list-secret-keys /home/xxxxx/.gnupg/secring.gpg ------------------------------- sec 4096R/AAAAAAAA 2015-01-01 uid Foo Bar <xxxx@xxxxx.com> uid Bar Foo <xxxx@yyyyy.com> ssb 4096R/BBBBBBBB 2015-01-01 # I've used the first key id (should be 8 hex digits) me@old$ gpg --export-secret-keys AAAAAAAA > priv.key # copy key over new system # backup .gnupg dir just in case me@new$ mv .gnupg .gnupg.back # import new priv key me@new$ gpg --import priv.key (type new passphrase set previously) # done!
為了完整起見,這裡是兩個系統的軟體版本,也許可以幫助某人:
新系統(不能輸入空密碼)軟體版本:
- gpg (GnuPG) 2.2.5
- libgcrypt 1.8.2
- pinentry-curses (pinentry) 1.1.0
舊系統(可輸入空密碼)軟體版本:
- gpg (GnuPG) 2.0.24
- libgcrypt 1.6.1
- pinentry-curses (pinentry) 0.8.3