如何使用python gnupg模块vers进行对称加密。1.2.5?

use*_*780 4 python encryption gnupg

我正在尝试使用python和gnupg进行对称加密。

此代码段适用于我的Windows Vista计算机,其python gnupg模块的版本为0.3.2:

import gnupg
gpg = gnupg.GPG()
data = 'the quick brown fow jumps over the laxy dog.'
passphrase='12345'
crypt = gpg.encrypt(data, recipients=None,
                     symmetric='AES256',
                     passphrase=passphrase,
                     armor=False)
Run Code Online (Sandbox Code Playgroud)

当我尝试在具有1.2.5版python gnupg模块的linux机器上运行它时,出现以下错误:

Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
  File "/usr/local/lib/python2.7/dist-packages/gnupg/gnupg.py", line 961, in encrypt
    result = self._encrypt(stream, recipients, **kwargs)
TypeError: _encrypt() got multiple values for keyword argument 'recipients'
Run Code Online (Sandbox Code Playgroud)

我已经进行了许多搜索,但找不到任何东西。

小智 5

这是一个古老的问题,但是我在Google搜索中遇到了这个问题,对提供的答案不满意。我在python-gnupg的GitHub问题中找到了真正的答案:

gpg.encrypt(data, symmetric='AES256', passphrase=passphrase, armor=False, encrypt=False)

因此,删除recipients=None并添加一个encrypt=False。然后,您的crypt.data将包含加密的数据。不直观,但可以。

(来源:https : //github.com/isislovecruft/python-gnupg/issues/110


Tho*_*zco 0

仔细检查文档,参数 isn't recipient,is 是recipients(注意复数)

文档(强调我的):

对称(默认为 False)如果指定,则使用对称加密。在这种情况下,请将收件人指定为“无”。如果指定 True,则使用默认密码算法 (CAST5)。从版本 0.3.5 开始,您还可以指定要使用的密码算法(例如“AES256”)。检查 gpg 命令行帮助以了解支持哪些对称密码算法。请注意,默认值 (CAST5) 可能不是最佳可用值。

  • 使用 `gpg.encrypt(data,recipients=None, symmetry='AES256', passphrase=passphrase,armor=False)` 我得到 `TypeError: _encrypt() gets multiple values for keywords argument 'recipients'` (3认同)