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

Bri*_*thy 83 encryption gnu gnupg private-key

背景:我的老板尝试使用公共和私有部分向我输出ASC密钥,但每当我收到文件时,私有部分永远不会加载,它不会解密任何文件.

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

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

            Error: "Decryption failed. Secret Key Not available." 
    
    Run Code Online (Sandbox Code Playgroud)

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

Dem*_*nto 180

您可以使用GPG中命令行工具导出私钥.它适用于Windows-shell.使用以下命令:

gpg --export-secret-keys
Run Code Online (Sandbox Code Playgroud)

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

编辑:

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

gpg --export-secret-keys --armor 1234ABCD > secret.asc
Run Code Online (Sandbox Code Playgroud)

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

gpg --list-keys
Run Code Online (Sandbox Code Playgroud)

要导出一个特定的密钥而不是全部密钥:

gpg --export-secret-keys keyIDNumber > exportedKeyFilename.asc
Run Code Online (Sandbox Code Playgroud)

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

  • 也许你想把你的密钥带到另一个地方.在这种情况下,您应该加密导出的数据:"gpg --export-secret-keys keyIDNumber | gpg -c> encrypted"使用"gpg -o unncrypted encrypted"对其进行解密. (8认同)
  • @Brian:这为您提供ASCII输出而不是二进制输出.如果将它保存在文件中,则无关紧要.但是一旦你想以任何其他方式传递它,ASCII版本就更容易处理(在电子邮件中内联发送它) (5认同)
  • @Brian:这会将密钥转储到控制台.如果要将其存储在文件中,可以将输出重定向到任意文件名("gpg --export-secret-keys> secret.asc"). (4认同)
  • 是什么-a添加? (2认同)
  • 从GnuPG导出的密钥保持加密状态(这就是为什么您无需输入私钥密码短语的原因),因此实际上无需再次对其进行加密。 (2认同)

hig*_*ita 31

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

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
Run Code Online (Sandbox Code Playgroud)

并选择5以将导入的私钥作为您的一个密钥启用


小智 18

看看Dark Otter的治疗方法

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

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

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

$ gpg -K
Run Code Online (Sandbox Code Playgroud)

从结果列表中注意您需要传输的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  #####################
Run Code Online (Sandbox Code Playgroud)

现在通过某种方式将"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  ######################
Run Code Online (Sandbox Code Playgroud)

在水獭的精神中"那应该是,那个".


SIF*_*IFE 9

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

gpg --import mypub_key
gpg --allow-secret-key-import --import myprv_key
Run Code Online (Sandbox Code Playgroud)


Bri*_*thy 6

这最终为我工作:

   gpg -a --export-secret-keys > exportedKeyFilename.asc 
Run Code Online (Sandbox Code Playgroud)

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

要导出一个特定的密钥而不是全部密钥:

   gpg -a --export-secret-keys keyIDNumber > exportedKeyFilename.asc
Run Code Online (Sandbox Code Playgroud)

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

  • 如果你真的想要asc,你还需要-a (2认同)

Mat*_*haq 5

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

gpg --output - --armor --export $KEYID | \
    gpg --output private_key.asc --armor --symmetric --cipher-algo AES256
Run Code Online (Sandbox Code Playgroud)

以及对应的解密方法:

gpg private_key.asc
Run Code Online (Sandbox Code Playgroud)


Mic*_*nyk 5

1.Export a Secret Key(这是你老板应该为你做的)

gpg --export-secret-keys yourKeyName > privateKey.asc
Run Code Online (Sandbox Code Playgroud)

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

gpg --import privateKey.asc
Run Code Online (Sandbox Code Playgroud)

3.还没有完成,你最终还是需要信任一把钥匙。您需要确保您最终也信任密钥。

gpg --edit-key yourKeyName
Run Code Online (Sandbox Code Playgroud)

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

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