代码之家  ›  专栏  ›  技术社区  ›  Bruno

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

  •  0
  • Bruno  · 技术社区  · 7 年前

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

    1. 打开TextEdit应用程序,在那里写下“Hello World”。
    2. 选择“Hello World”并控制单击所选内容,以打开关联菜单。
    3. 在关联菜单中,选择“Services>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消息”。

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   Joe    6 年前

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

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

    现在按[回车]键创建新行。然后点击[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