如何导出私钥/秘密ASC密钥来解密Windows中的GPG文件

背景:我的老板已经试图用公共和私人部分向我出口一个ASC密钥,但是每当我得到这个文件的私人部分永远不会加载,它不会解密任何文件。

我们已经尝试使用以下方式导出ASC密钥:

  • Windows应用程序Kleopatra 2.1(包含在gpg4win中)
  • Windows应用程序GNU隐私助手(包含在gpg4win中)

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

你如何正确导出一个秘密或私人的ASC密钥来解密gpg文件?

您可以使用GPG中的命令行工具导出私钥。 它在Windowsshell上工作。 使用以下命令:

 gpg --export-secret-keys 

带有--export的普通导出将不包含任何私钥,因此您必须使用--export-secret-keys

编辑:

总结我在评论中给出的信息,这是一个命令,允许您将ID 1234ABCD的特定密钥导出到文件secret.asc:

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

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

 gpg --list-keys 

只导出1个特定的密钥而不是全部:

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

keyIDNumber是您尝试导出的所需密钥的密钥ID的编号。

以上所有答复都是正确的,但可能会丢失一个关键步骤,您需要编辑导入的密钥并“最终信任”该密钥

 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 

并select5将该导入的私钥作为您的密钥之一

看到黑獭的治疗

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

其中包括一个相当安全的方式来传输密钥。 你可以把这个build议放到如下所示的shell脚本中以便重复使用。

首先从显示的列表中获取所需的KEYID

 $ gpg -K 

从结果列表中logging您需要传输的KEYID(秒后的8个hex)。

然后在第一个帐户上启动testing的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 #################### EXPORT _ PRIVATE _ KEY ##################### 

现在通过一些方式转移“pubkey.gpg”(如果需要)和私人的“keys.asc”到第二个账户,并启用下面显示的程序。

 $ cat import_private_key gpg --no-use-agent --output - keys.asc | gpg --import ################### IMPORT _ PRIVATE _ KEY ###################### 

在水獭的精神“那,应该是那个”。

我认为你还没有导入私钥作为消息错误说,要从gnupg导入公钥/私钥:

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

这最终为我工作:

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

只要保持.asc扩展名,就可以用任何名称命名keyfilename.asc。
此命令将用户计算机上的所有密钥复制到调用该命令的工作目录中的keyfilename.asc。

只导出1个特定的密钥而不是全部:

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

keyIDNumber是您尝试导出的所需密钥的密钥ID的编号。

类似于@Wolfram J的回答,下面是一个用密码encryption私钥的方法:

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

并有相应的解密方法:

 gpg private_key.asc