如何在python中使用gpgme进行对称加密?

时间:2014-06-23 13:20:40

标签: python encryption gpgme

我尝试使用python的gpgme,pygpgme包装来实现对称加密。不幸的是,我使用的是gpg 2.0.22和gpg-agent 2.0.22。 This邮件列表帖子说2.0中忽略了密码短语回调,这是我正在运行的问题。

当我运行以下代码时,我总是会收到一条错误,说“密码错误”,但我甚至没有提示输入密码。理想情况下,我希望能够代表用户提供密码:

import gpgme

def passphrase_cb(uid_hint, passphrase_info, prev_was_bad, fd):
    print "Entered passphrase_cb"
    print "uid_hint=%s passphrase_info=%s" % (uid_hint, passphrase_info)

def main():
    ctx = gpgme.Context()
    ctx.armor = False
    ctx.passphrase_cb = passphrase_cb
    ctx.set_engine_info(gpgme.PROTOCOL_OpenPGP, "/usr/local/bin/gpg",
                        "/Users/me/Library/Application Support/temp/test")

    input_path = "/tmp/input.pdf"
    enc_output_path = "/tmp/output.pdf.gpg"

    with open(input_path, 'rb') as input:
        with open(enc_output_path, 'wb') as enc_output:
            res = ctx.encrypt(None,
                              gpgme.ENCRYPT_ALWAYS_TRUST,
                              input,
                              enc_output)
永远不会调用

passphrase_cb

如何提供密码短语,以便执行对称加密?

1 个答案:

答案 0 :(得分:0)

嗯,这不是那么重要。我只是将gpg二进制文件用于对称加密。我发现this答案很有用。