2011-04-07 518 views
63

背景:我的老闆已經嘗試用公共和私有部分向我導出ASC密鑰,但是每當我得到文件時,私密部分都不會加載,解密任何文件。如何導出私鑰/祕密ASC密鑰以解密Windows中的GPG文件

我們已經嘗試導出使用ASC重點:

  • Windows應用程序克列奧帕特拉2.1(包含在gpg4win)
  • Windows應用程序GNU隱私助手(包含在gpg4win)

     Error: "Decryption failed. Secret Key Not available." 
    

如何正確導出密鑰或私有asc密鑰來解密gpg文件?

回答

131

可以導出與command-line tool from GPG私鑰。它適用於Windows外殼。使用下面的命令:

gpg --export-secret-keys 

一個正常的出口與--export將不包括任何私鑰,因此你必須使用--export-secret-keys

編輯:

總結一下我的意見給出的信息,這是一個可以讓你與ID 1234ABCD導出一個特定的關鍵文件secret.asc命令:

gpg --export-secret-keys -a 1234ABCD > secret.asc 

您可以使用以下命令找到您需要的ID。該ID是第二列的第二部分:

gpg --list-keys 

出口僅有1個特定的密鑰,而不是所有的人:

gpg --export-secret-keys keyIDNumber > exportedKeyFilename.asc 

keyIDNumber是密鑰ID爲所需的密鑰數量你正在嘗試導出。

+3

@Brian:這將轉儲到控制檯的關鍵。如果您想將其存儲在文件中,可以將輸出重定向到任意文件名(「gpg --export-secret-keys> secret.asc」)。 – Demento 2011-04-08 15:19:39

+1

好酷。我將其添加到您的答案! – 2011-04-12 21:03:58

+2

什麼是 - 添加? – 2011-04-13 12:27:15

9

我想你還沒有導入私鑰作爲消息的錯誤說,從GnuPG的導入公鑰/私鑰:

gpg --import mypub_key 
gpg --allow-secret-key-import --import myprv_key 
+0

我問從計算機出口那可行......你只能在本地服務器上導入密鑰。 – 2011-04-12 21:04:30

+0

@Brian McCarthy:你想說什麼? – SIFE 2011-04-12 23:02:20

+0

如果已經導入了私鑰,我們是否真的需要導入公鑰?據我所知,一個公鑰可以從任何一個私鑰生成。 – farhany 2013-07-10 16:54:25

6

這結束了對我的工作:

gpg -a --export-secret-keys > exportedKeyFilename.asc 

您可以通過任何名稱,只要你保持對.ASC擴展名keyfilename.asc。
此命令將用戶計算機上的所有密鑰複製到調用該命令的工作目錄中的keyfilename.asc。

只匯出1特定的密鑰,而不是所有的人:

gpg -a --export-secret-keys keyIDNumber > exportedKeyFilename.asc 

keyIDNumber是您要導出所需的密鑰的密鑰ID的數量。

+1

您可以使用「--list-keys」列出所有可用的密鑰。第二列將包含「2048g/1234ABCD」等ID。找到所需的密鑰並使用「gpg --export-secret-keys 1234ABCD> secret.asc」將其導出,當然用正確的ID更改1234ABCD。 您還可以添加「-a」標誌。它用ASCII字符寫輸出,以防二進制輸出引起麻煩。 – Demento 2011-04-08 15:27:45

+0

@demento,感謝您的額外反饋...虐待添加到答案 – 2011-04-12 20:56:52

+2

你仍然需要-a如果你真的想要asc – RichieHH 2014-10-14 20:41:34

24

所有上述的答覆是正確的,但是可能缺少一個關鍵的一步,你需要編輯輸入鍵和「完全信任」是關鍵

gpg --edit-key (keyIDNumber) 
gpg> trust 

Please decide how far you trust this user to correctly verify other users' keys 
(by looking at passports, checking fingerprints from different sources, etc.) 

    1 = I don't know or won't say 
    2 = I do NOT trust 
    3 = I trust marginally 
    4 = I trust fully 
    5 = I trust ultimately 
    m = back to the main menu 

,並選擇5個,使原裝進口私鑰你的鑰匙之一

13

暗水獺

http://montemazuma.wordpress.com/2010/03/01/moving-a-gpg-key-privately/

其中包括一個相當安全的W查看治療可以轉移密鑰。您可以將該建議放入下面顯示的shell腳本中以便重複使用。

首先得到你想要從列表中

$ gpg -K 

所示。從結果列表中注意KEYID(以下秒8個十六進制),你需要轉移的KEYID。

然後在第一個帳戶上啓動測試的shell scip「export_private_key」並生成您的pubkey.gpg + keys.asc。隨後調用第二個帳戶「import_private_key」。下面是貓顯示其內容(複製粘貼&內容):

$ cat export_private_key 
gpg -K 
echo "select private key" 
read KEYID 
gpg --output pubkey.gpg --export $KEYID 
echo REMEMBER THE COMING PASS-PHRASE 
gpg --output - --export-secret-key $KEYID | \ 
    cat pubkey.gpg - | \ 
    gpg --armor --output keys.asc --symmetric --cipher-algo AES256 
ls -l pubkey.gpg keys.asc 
#################### E X P O R T _ P R I V A T E _ K E Y ##################### 

現在轉院通過某種手段「pubkey.gpg」(如果需要)和私營「keys.asc」到第二個賬戶和envoke下面的程序。

$ cat import_private_key 
gpg --no-use-agent --output - keys.asc | gpg --import 
################### I M P O R T _ P R I V A T E _ K E Y ###################### 

在水獺的精神「那,應該是這樣的」。

+0

感謝您的腳本包括公鑰和私鑰在一個口令保護的文件中。讓我的生活變得更美好! – codekoala 2016-04-16 04:52:19

2

到@Wolfram J的答案類似,這裏是加密的方法私鑰with a passphrase

gpg --output - --armor --export $KEYID | \ 
    gpg --output private_key.asc --armor --symmetric --cipher-algo AES256 

以及相應的方法解密:

gpg private_key.asc