100

背景:我的老板尝试将 ASC 密钥与公共和私人部分一起导出给我,但每当我得到文件时,私人部分永远不会加载,也不会解密任何文件。

我们尝试使用以下方法导出 ASC 密钥:

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

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

您如何正确导出秘密或私有 asc 密钥来解密 gpg 文件?

4

7 回答 7

195

您可以使用GPG 中的命令行工具导出私钥。它适用于 Windows 外壳。使用以下命令:

gpg --export-secret-keys

正常导出--export不会包含任何私钥,因此您必须使用--export-secret-keys.

编辑:

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

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

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

gpg --list-keys

要仅导出 1 个特定密钥而不是全部:

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

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

于 2011-04-07T22:43:36.653 回答
33

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

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 以启用该导入的私钥作为您的密钥之一

于 2012-05-23T10:34:46.627 回答
20

看黑水獭的治疗

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

如果站点关闭,请参考 archive.org 备份:

https://web.archive.org/web/20170518155052/https://montemazuma.wordpress.com/2010/03/01/moving-a-gpg-key-privately/

其中包括一种相当安全的密钥传输方式。您可以将该建议放入如下所示的 shell 脚本中以供重复使用。

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

$ gpg -K

从结果列表中记下传输所需的 KEYID(秒后的 8 个十六进制数)。

然后在第一个帐户上调用经过测试的 shell scipts "export_private_key" 并生成您的 pubkey.gpg + keys.asc。随后调用第二个帐户“import_private_key”。这是他们用 cat 显示的内容(复制和粘贴内容):

$ 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”转移到第二个帐户并调用下面显示的程序。

$ 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  ######################

在 Otter 的精神中,“那个,应该是,那个”。

于 2013-05-18T00:55:14.273 回答
9

我认为您还没有像消息错误所说的那样导入私钥,要从 gnupg 导入公钥/私钥:

gpg --import mypub_key
gpg --allow-secret-key-import --import myprv_key
于 2011-04-07T21:42:23.813 回答
6

这最终为我工作:

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

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

要仅导出 1 个特定密钥而不是全部:

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

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

于 2011-04-08T14:58:19.217 回答
5

与@Wolfram J 的回答类似,这是一种使用密码加密您的私钥的方法:

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

以及相应的解密方法:

gpg private_key.asc
于 2017-07-31T09:52:28.647 回答
5

1.导出一个密钥(这是你老板应该为你做的)

gpg --export-secret-keys yourKeyName > privateKey.asc

2.Import Secret Key(导入你的privateKey)

gpg --import privateKey.asc

3.尚未完成,您仍然需要最终信任密钥。您需要确保您最终也信任密钥。

gpg --edit-key yourKeyName

输入trust,5,y,然后退出

资料来源:https ://medium.com/@GalarnykMichael/public-key-asymmetric-cryptography-using-gpg-5a8d914c9bca

于 2018-08-18T09:20:16.830 回答