【问题标题】:How do I encrypt plaintext with GnuPG?如何使用 GnuPG 加密明文?
【发布时间】:2011-03-31 18:44:42
【问题描述】:

我最近一直在使用 GnuPG,并且开始依赖它加密文件等的能力。

但是,我目前正在处理几个涉及通信(即聊天、电子邮件等)的项目,我想使用现有密钥来加密/解密文本本身,而不是使用“容器”,例如文件或磁盘映像。

我想我可以加密容器,将流转换为 base64(或适当的东西),然后将文本标记为这样,但我想有一个更直接的解决方案。我确定我缺少一些简单的东西,但是,我缺少它。

有什么想法吗?

【问题讨论】:

    标签: email encryption plaintext gnupg


    【解决方案1】:

    怎么样:

    $ echo "hello" | gpg --symmetric --armor --passphrase "asdf"
    -----BEGIN PGP MESSAGE-----
    Version: GnuPG v1.4.11 (Darwin)
    
    jA0EAwMCWfhRZo0AiwVgyRw5Q26Tf+i6OCiQOVoUNJZEfz5ekBJw6BdVpE88
    =ecV3
    -----END PGP MESSAGE-----
    

    如果这是您要查找的内容,您需要设置 gpg-agent 来处理密码短语……这样从命令行传入是相当不安全的(因为机器上的任何程序都可以窃取它) .

    如果“现有密钥”是指“现有的 pub/priv 密钥对”,那么:

    $ echo "hello" | gpg --encrypt --armor -r B230230D
    -----BEGIN PGP MESSAGE-----
    Version: GnuPG v1.4.11 (Darwin)
    
    hQIMA+Cu7Ed7iNErAQ/8CTkEOOGVub1wEt4+5qnB9gNbVF7TNjWMjw/znKAjFg1j
    f0s5xuUoPamvtLXKbs0J6OdpwTZfOkK/MIXxjsz1P4cC01CmoSsdzIkhbqccX7GP
    VWRM9P0TxI9005JaxMh9rsoxVP2k/RtK3z2f3didl2SMS45TfhV8MJss5HqeQlVC
    KHiCWfbHB7ww68ZIVs/AAx0zVPVld1BwHJcRvFIohBu9GUTrDMYxpOsKNZDVWXb0
    154KrNFgnjgueGmh25HYdfJ+gs0Fclsq5XATo2H7gfGnq+DALeWy20ig4o9VOAcj
    /KU2HRA/XD13MHRZiyJVTszF1VfvsdANnemI75O+f7z34+P0lQiCCV/Z7xqrd384
    9V7Uby8n+9PppD+mpt8wiCjQUfAXmHBptoNw8OwuWUGnw7svCu7wqzgjBTyAxvwL
    325/o9O2TTYZvOlpoxGayG3JbKzpHlQDv7RKIwC8W1nr/0q96Hxh+RpZfk0zwGyP
    wZOx27AyhLAOJtq6Tfg/ef+Ln6d5BaDWmvF9sC/wKXnjN60X6DSLlMDDIYO01whe
    JroyE+R1KMYB7r5y7VUGCoyPcrJj3yQTkYVWuvHSsy3sn7N+iWd/29V/ipFeT5Tb
    SKRV/Dj/ypJn07jnsLb2ixqr+UTaARP8el7UTJtYCzxs14xdw4uRvkezKZR08C/S
    QQFpMeFcVmxGCQVr5llp24bDjtiIT06VbXqZBiQ+kX9JHUDwYEs1qi+seNAlCG4C
    4INLNud/n85iPWrSropiYPPY
    =SGgD
    -----END PGP MESSAGE-----
    

    在这两种情况下,消息都使用以下方法解密:

    $ cat encrypted_message | gpg
    gpg: CAST5 encrypted data
    Enter passphrase: asdf
    gpg: encrypted with 1 passphrase
    hello
    

    【讨论】:

    • 哇。我的狭隘视野使我无法考虑将信息传递给 GPG。不过有一件事:在复杂文本(例如电子邮件、双字节字符集等)的情况下,您建议如何处理?
    • 我不知道为什么文本的复杂性很重要……只需将原始字节传输到 GPG,不是吗?
    • 好吧,我担心输入一些命令行无法正确解析的内容,例如: echo "¶ƒ" test" of " this" ´•ª∑ƒ¨¥ƒß∂ | gpg -加密 --armor ......但是,我可以简单地将文本保存到文件中,使用“--armor”对其进行加密,然后从文件流中读取结果。
    • 好吧,如果你以编程方式调用它,你就不会使用 echo ......这只是一个例子。您可以使用例如 popen 来运行 GPG,然后将原始数据写入管道。
    • 啊啊啊,明白了。那么,是的——如果你想使用 gpg 二进制文件(而不是使用 gnupg.org/gpgme.html ),使用类似 popen 的东西,然后写入 gpg 的标准输入是要走的路。
    猜你喜欢
    • 2012-07-02
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多