在windows 7 w/python 2.7和GPG4Win v2.2.0上使用python gnupg v0.3.5
test_gnupg.py导致两个失败:
Test that searching for keys works ... FAIL
Doctest: gnupg.GPG.recv_keys ... FAIL
每个位置都有两个钥匙圈(每个位置都有一个钥匙圈和一个钥匙圈):
under the GPGHome directory (C:\Program Files (x86)\GNU\GnuPG)
under the user profile(C:\Users\\AppData\Roaming\gnupg)
如果我创建GPG实例并将keyring文件路径设置为用户配置文件pubring.pgp,那么我将从GPG.list_keys()获得一个结果。如果我让它使用gpghome目录pubring.pgp,就不会从list_keys()中得到任何结果,因为该keyring是空的。
因此,假设我指定了用户配置文件keyring,并且我有一个要使用的密钥,则会发生以下情况:
>>>data = '1234 abcd 56678'
>>>fingerprint = u'<fingerprint>'
>>>enc = gpg.encrypt(data,fingerprint)
>>>enc.data
''
encrypt_file()给出相同的结果,没有发生任何事情,没有错误。我对这些都不是特别了解,但如果我有数据和公钥,这应该非常简单。我有一个可怕的时间试图确定什么是错误的,因为我没有看到任何地方的日志文件,我没有错误时,试图这样做。
我怎样才能确定这里出了什么问题? 我在StackOverflow,http://pythonhosted.org/python-gnupg/#getting-started和python gnupg的google组上看到了几乎所有的内容。
为什么我一开始就有两套独立的钥匙圈?
编辑: 澄清有两套独立的发布和发布
编辑2: 下面的答案有助于引出实际问题。 gnupg.GPG()构造函数正在设置包含“no tty”的GPG命令行选项,调用gnupg.GPG(options='')可解决此问题并成功加密数据和文件。
好吧,我终于开始研究这个,从命令行得到基本的加密。下面是一个对从命令行输入的数据进行加密的示例:
将gpg_home更改为要使用的这两条GnuPG路径中的任何一条。第一个看起来像默认安装位置,第二个看起来是特定于您的用户帐户。该脚本将提示输入要加密的文本和要加密的密钥ID,然后将ASCII铠装加密数据打印到stdout。
编辑:我不确定,但我怀疑您的代码失败的原因可能是使用了收件人密钥ID的整个指纹,这是不必要的(我使用了0xLONG格式,我的配置文件中有一个示例),或者您调用了错误的GPG主目录。
编辑2:这可以对文件进行加密,并将输出写入同一目录中的文件,它在*nix系统上也可以正常工作。您需要更改gpg_主页,如上面的示例所示:
我的工作完成了!:)
顺便说一句,这两个例子都使用Python2.7,对于Python3,您需要修改原始的input()行来使用input()。
相关问题 更多 >
编程相关推荐