如何执行GPGTools的上下文菜单所做的事情,但是在命令行中使用GPG?



我使用Mac,有时使用GPGTools执行以下操作:

  1. 打开TextEdit应用程序,然后在那里写"Hello World"。
  2. 选择"Hello World"并按住 Control 键单击所选内容以打开上下文菜单。
  3. 在上下文菜单中,选择"> OpenPGP 的服务:将所选内容加密到新窗口",然后在出现的对话框中选择收件人。

然后弹出一个新窗口,显示一条加密消息,如下所示:

-----BEGIN PGP MESSAGE-----
hQEMA0cwf/w1ZfpTAQf/Ze9lwDIlewAHXz2t7UgM/CJGB1E1UCHejJF21nSunztI
yf7LRMxb20VvXa6VbrzgObBrlgHS9noKCmgS9CtdXMf1owjXUbZjmFmXlIfxQnuR
**[...]**
Wuqxb83MWOBVzZ2fXKettmb39NfMBR9zEPICiMd48DBvUlR3l3aaptusjRYr865B
9em2G3bK050Y/rT3Dz6WhqNT9m70ePXefM49sjruUPrQwLi9yS+CcV4dfayBgCQD
iT5be+E=
=jqRq
-----END PGP MESSAGE-----

我希望能够使用命令行做同样的事情。我想知道如何以独立于操作系统的方式做到这一点。该解决方案也应该适用于Windows和Linux。

我知道GPGTools是基于GPG(GnuPG)的,因此,我认为使用"gpg"命令行工具应该可以实现我想要的东西。我知道如何使用"gpg"来加密,例如,一个"file.txt"文件并获取一个加密的"file.txt.gpg"文件,但这个加密文件不包含"PGP MESSAGE",如上所示。

总之,我的问题是:如何使用命令行加密文本字符串(而不是文件)并获取"PGP MESSAGE"?

要通过标准输入加密字符串,您需要执行以下操作:

$ gpg --encrypt --armor --hidden-recipient "your_key@address.here" --output -

执行此命令后,它将显示为挂起。继续键入(复制/粘贴)您的字符串。

Pasted string goes here.
Hitting enter creates a new line.
Backspace deletes characters.
You get the idea.

现在按 [Enter] 创建新行。然后按 [CTRL+D](这表示"文件结束")终止程序。

然后gpg会将您的 ASCII 装甲加密文本直接转储到 shell 中:

-----BEGIN PGP MESSAGE-----
hQEMAwAAAAAAAAAAAQf7BlN7eYqI3lzZS9soEOEXAMPLEIbTkS8mHYMQ68/WXWVw
QRhF5eNjOS3+9VgKU44I/D7pQ53IOTBC/ABPLp9Ykfi9qDNabw6YFob7HGrT9yN9
/zrpAFztREVpgTLfMVdqOIphCx+A9jk/p9D1nRrGkXlCtRpQw9ho/larlQEPyaEx
hK8TOaoELOrIF1D98KEXAMPLEKRLGmGEncR7Vd5DuTXo62Bs3UZYjVYNaboFwZxS
m0+6gLp2JBMc/Gg1/Llk9ufDEci7Vwd+udvPoGPfpbiIGhp2bOnjN03TEbDenu59
219q03bIrQhGmpbuXs7A3lc80v60BTNJpfXVEXAMPLEhAV8P2G4t9en3oIbXl9nH
rpWObJFCCoeWjtZzwammzzVRzMnQjzKyyQUFF8/FfEut/NkKhxfqXWuW2lsvzChC
5OUQjt+dFSGG3NdMFKuoUco+zECH8XgbO9AkC45fJE5Akg==
=6yVB
-----END PGP MESSAGE-----

旁注:

如果您使用的是OS X,也可以使用pbpaste直接从粘贴板缓冲区粘贴文本。您可以通过执行以下操作将其输出通过管道传输到gpg

$ pbpaste | gpg --encrypt --armor --hidden-recipient "your_key@address.here" --output -

请注意,粘贴板缓冲区不会自动清除。如果您在那里复制一个秘密字符串,请务必复制其他内容(随机的不相关文本)以在完成后清除它。例如,通过ssh或其他方式访问您帐户的任何人(攻击者)都可以毫不费力地读取您的纯文本密钥。

要简单地通过外壳清除粘贴板缓冲区,请执行以下操作:echo | pbcopy

最新更新