gpt4 book ai didi

python gnupg.encrypt : no errors but not encrypting data or files

转载 作者:太空狗 更新时间:2023-10-30 01:22:46 25 4
gpt4 key购买 nike

在带有 Python 2.7 和 GPG4Win v2.2.0 的 Windows 7 上使用 python-gnupg v0.3.5

test_gnupg.py 导致 2 次失败:

Test that searching for keys works ... FAIL

Doctest: gnupg.GPG.recv_keys ... FAIL

这些位置中的每一个都存在 2 个 key 环(在每个位置中进行加密和发布):

under the GPGHome directory (C:\Program Files (x86)\GNU\GnuPG)

under the user profile(C:\Users\\AppData\Roaming\gnupg)

如果我创建 GPG 实例并将 key 环文件路径设置为用户配置文件 pubring.pgp,我会从 GPG.list_keys() 获得结果。如果我让它使用 gpghome 目录 pubring.pgp,我从 list_keys() 得不到任何结果,因为那个 key 环是空的。

如果我指定了用户配置文件 key 环并且我有一个 key 可以使用,这就是发生的情况:

    >>>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 组。

另外,为什么我一开始就有两套独立的 key 圈?

编辑:阐明了有 2 套独立的发布和加密

编辑 2:下面的回答有助于解决实际问题。gnupg.GPG() 构造函数正在设置包括“no-tty”的 gpg 命令行选项,调用 gnupg.GPG(options='') 解决了问题并成功加密了数据和文件。

最佳答案

好吧,我终于抽出时间来看这个,并获得了从命令行运行的基本加密。下面是一个用于加密从命令行输入的数据的示例:

import gnupg

gpg_home = "/path/to/gnupg/home"
gpg = gnupg.GPG(gnupghome=gpg_home)

data = raw_input("Enter data to encrypt: ")
rkey = raw_input("Enter recipient's key ID: ")

encrypted_ascii_data = gpg.encrypt(data, rkey)

print(encrypted_ascii_data)

将 gpg_home 更改为您要使用的这两个 GnuPG 路径中的任何一个。第一个看起来像默认安装位置,第二个似乎特定于您的用户帐户。该脚本将提示输入一些要加密的文本和要加密的 key ID,然后将 ASCII 装甲加密数据打印到标准输出。

编辑:我不确定,但我怀疑您的代码失败的原因要么是因为使用了整个指纹作为接收者 key ID,这是不必要的(我使用了 0xLONG 格式,其中的一个示例在我的profile),或者你调用了错误的 GPG 主目录。

编辑 2:这用于加密文件并将输出写入同一目录中的文件,它将像在 *nix 系统上一样工作。您需要像上面的示例一样更改 gpg_home:

import gnupg

gpg_home = "~/.gnupg"
gpg = gnupg.GPG(gnupghome=gpg_home)

data = raw_input("Enter full path of file to encrypt: ")
rkeys = raw_input("Enter key IDs separated by spaces: ")
savefile = data+".asc"

afile = open(data, "rb")
encrypted_ascii_data = gpg.encrypt_file(afile, rkeys.split(), always_trust=True, output=savefile)
afile.close()

我的工作完成了! :)

顺便说一句,这两个示例都使用 Python 2.7,对于 Python 3,您需要修改 raw_input() 行以改为使用 input()。

关于 python gnupg.encrypt : no errors but not encrypting data or files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19298171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com