- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在带有 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/
这是一个基于 Python 的 GnuPg 用户友好的前端程序。 一直试图找到只导入一个公钥而不是所有公钥的命令。 这将导入文件中的所有键 gpg --import Some_pub_keys.txt
我需要生成一个 PGP 公钥/私钥。我以前从来没有这样做过。我已阅读文档,但给出的示例与我在计算机上看到的不匹配。 我用 gnupg 生成了 key 。 我运行命令列出公钥 gpg --list-ke
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 8年前关闭。 Improve thi
几年前,我改变了我的真实姓名。然后我自然想将名称更改为我的公共(public)和私有(private) GPG key 。我已经设法用我的新真实姓名为我的公钥生成子 key ,并且我已经设法用我以前的
我想删除用户 ID 或更新其评论,或者至少将另一个用户 ID 设为默认值。这是因为它包含的注释有一个愚蠢的排版错误。喜欢: gpg> list pub 4096R/xxxxxxxx created
我在使用 Python gnupg 模块验证签名时遇到问题。使用此模块,我可以加密和签署文件: gpg.encrypt_file(stream, encrypt_for, sign=sign_by,
我确实用 git 签署了提交,这是一个大问题,我无法从 CLI 以外的任何地方输入 gpg key 密码。例如,如果我将在 vscode 中提交,它将失败。所以我想出了一个想法,只需从 CLI 输入密
我是 PGP 新手,我正在尝试使用 GnuPG 通过 this tutorial 生成 PGP 私钥. 基本上,我在命令提示符下键入以下命令(在管理员模式下): gpg --gen-key 输入以下所
我有一个 Java 应用程序,它从远程计算机获取 GnuPG 加密文件,我需要解密和处理它们。然后我需要加密输出文件并将其发送到远程计算机。 首先我尝试了gnupg-for-java ( https:
尝试在 Python 中初始化 GnuPG 绑定(bind)时,我收到一条错误消息 TypeError: __init__() got an unexpected keyword argument '
如何通过 GPG(GnuPG) 中的子 key (多个子 key (e))加密 pub rsa4096/22E49AB870AD169A 2017-03-09 [SC] uid
我收到一个错误: gpg: no default secret key: No secret key gpg: [stdin]: clearsign failed: No secret key GPG
以下是我一直在尝试的代码。 import os import gnupg import pdb pdb.set_trace() gpg = gnupg.GPG(gnupghome='new') inp
我需要自动加密文件,例如myfile.xls 到 myfile.gpg。现在,当我尝试自动加密或使用 GNU 隐私助手对其进行加密时,加密的文件是 myfile.xls.gpg。当我删除该 .xls
我想对文件 /tmp/public.txt 进行对称加密. gpg --symmetric /tmp/public.txt 该命令将调用 enter passphrase窗口,我想自动发送密码。 我在
我正在尝试导入公钥、读取 csv 文件、加密该文件并将加密文件存储在文件夹/目录中。程序运行但在我运行脚本后似乎没有生成、创建或输出任何内容。任何建议。 import gnupg gpg = gnup
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
是否有一些 Gpg2 使用的库的依赖树或图,例如 libgpg-error 或 libassuan &c.? 或者另一种方法来确定在其中一个获得新版本后我需要重新编译哪些?例如。据我所知,libgpg
我正在使用 GNUPG 工具通过命令行执行加密/解密。在删除公钥时,我给出了以下命令: gpg2 --quite --yes --delete-key "Solveon DB" 命令执行后我得到了问题
我正在尝试对一些使用GPG(当前为1.4.10版)的自定义软件进行过时的验证,以执行对称加密/解密过程。我当前的加密命令如下所示: gpg --batch --no-tty --no-use-agen
我是一名优秀的程序员,十分优秀!