背景:我的老板尝试使用公共和私人部分向我导出ASC密钥,但每当我收到文件时,私有部分永远不会加载,也不会解密任何文件。
我们尝试使用以下方法导出ASC密钥:
Windows应用程序GNU Privacy Assistant(包含在gpg4win中)
Error: "Decryption failed. Secret Key Not available."
如何正确导出秘密或私有asc密钥来解密gpg文件?
答案 0 :(得分:170)
您可以使用command-line tool from GPG导出私钥。它适用于Windows-shell。使用以下命令:
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编号。
答案 1 :(得分:30)
以上所有回复都是正确的,但可能缺少一个关键步骤,您需要编辑导入的密钥并“最终信任”该密钥
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以启用该导入的私钥作为您的一个密钥
答案 2 :(得分:16)
参见Dark Otter的治疗
http://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 ######################
在奥特的精神中“那应该是,那个”。
答案 3 :(得分:9)
我认为你还没有导入私钥,因为消息错误说,要从gnupg导入公钥/私钥:
gpg --import mypub_key
gpg --allow-secret-key-import --import myprv_key
答案 4 :(得分:6)
这最终为我工作:
gpg -a --export-secret-keys > exportedKeyFilename.asc
只要你保留.asc扩展名,你就可以用任何名字命名keyfilename.asc 此命令将用户计算机上的所有密钥复制到调用命令的工作目录中的keyfilename.asc。
只导出1个特定密钥而不是全部密钥:
gpg -a --export-secret-keys keyIDNumber > exportedKeyFilename.asc
keyIDNumber是您尝试导出的所需密钥的密钥ID编号。
答案 5 :(得分:4)
与@Wolfram J的答案类似,这是一种加密私钥with a passphrase的方法:
gpg --output - --armor --export $KEYID | \
gpg --output private_key.asc --armor --symmetric --cipher-algo AES256
和相应的解密方法:
gpg private_key.asc
答案 6 :(得分:2)
1。导出一个秘密密钥(这是老板应该为您做的事情)
gpg --export-secret-keys yourKeyName > privateKey.asc
2。导入秘密密钥(导入您的私人密钥)
gpg --import privateKey.asc
3。尚未完成,您仍然需要最终信任密钥。 您需要确保自己最终也信任密钥。
gpg --edit-key yourKeyName
输入5,y,然后退出
来源:https://medium.com/@GalarnykMichael/public-key-asymmetric-cryptography-using-gpg-5a8d914c9bca