python gnupg.encrypt:没有错误,但不加密数据或文件

2023-11-27

在 Windows 7 上使用 python-gnupg v0.3.5 w/Python 2.7 和 GPG4Win v2.2.0

test_gnupg.py 导致 2 次失败:

测试搜索密钥是否有效...失败

文档测试:gnupg.GPG.recv_keys ...失败

这些位置中的每一个都存在 2 个密钥环(每个位置都有 secring 和 pubring):

在 GPGHome 目录下 (C:\Program Files (x86)\GNU\GnuPG)

在用户配置文件下(C:\Users\\AppData\Roaming\gnupg)

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

因此,假设我指定了用户配置文件密钥环并且我有一个可以使用的密钥,则会发生以下情况:

    >>>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 套独立的 pubring 和 secring

编辑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 路径中的任意一个。第一个看起来像默认安装位置,第二个似乎特定于您的用户帐户。该脚本将提示输入一些要加密的文本和要加密的密钥 ID,然后将 ASCII 装甲加密数据打印到标准输出。

编辑:我不确定,但我怀疑您的代码失败的原因是由于使用了收件人密钥 ID 的整个指纹,这是不必要的(我使用了 0xLONG 格式,其示例在我的个人资料中),或者您调用了错误的 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() 代替。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python gnupg.encrypt:没有错误,但不加密数据或文件 的相关文章

  • 在 Python 中解析 TCL 列表

    我需要在双括号上拆分以空格分隔的 TCL 列表 例如 OUTPUT 172 25 50 10 01 01 Ethernet 172 25 50 10 01 02 Ethernet Traffic Item 1 172 25 50 10 01
  • 如何传递架构以从现有数据帧创建新数据帧?

    要将 schema 传递到 json 文件 我们这样做 from pyspark sql types import StructField StringType StructType IntegerType data schema Stru
  • Gunicorn 工作人员无论如何都会超时

    我正在尝试通过gunicorn运行一个简单的烧瓶应用程序 但是无论我做什么 我的工作人员都会超时 无论是否有针对应用程序的活动 工作人员在我设置任何内容后总是会超时timeout值到 是什么导致它们超时 当我发出请求时 请求成功通过 但工作
  • matplotlib 图中点的标签

    所以这是一个关于已发布的解决方案的问题 我试图在我拥有的 matplotlib 散点图中的点上放置一些数据标签 我试图在这里模仿解决方案 是否有与 MATLAB 的 datacursormode 等效的 matplotlib https s
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • 嵌套列表的重叠会产生不必要的间隙

    我有一个包含三个列表的嵌套 这些列表由 for 循环填充 并且填充由 if 条件控制 第一次迭代后 它可能类似于以下示例 a 1 2 0 0 0 0 0 0 4 5 0 0 0 0 0 0 6 7 根据条件 它们不重叠 在第二次迭代之后 新
  • 如何从Python中的函数返回多个值? [复制]

    这个问题在这里已经有答案了 如何从Python中的函数返回多个变量 您可以用逗号分隔要返回的值 def get name you code return first name last name 逗号表示它是一个元组 因此您可以用括号将值括
  • 在 PHP 中使用 phpseclib 时出现 RSA 问题

    我正在尝试在 phpseclib 中使用 RSA 实现 我认为在函数中执行一次代码并重新使用该函数会更容易 当我尝试向代码发送短信时 我收到一条错误消息 提示 解密错误 测试还让我意识到每次代码运行时密文都是不同的 所以我显然在那里做错了什
  • 矩形函数的数值傅里叶变换

    本文的目的是通过一个众所周知的分析傅里叶变换示例来正确理解 Python 或 Matlab 上的数值傅里叶变换 为此 我选择矩形函数 这里报告了它的解析表达式及其傅立叶变换https en wikipedia org wiki Rectan
  • 打印包含字符串和其他 2 个变量的变量

    var a 8 var b 3 var c hello my name is var a and var b bye print var c 当我运行程序时 var c 会像这样打印出来 hello my name is 8 and 3 b
  • 如何将特定范围内的标量添加到 numpy 数组?

    有没有一种更简单 更节省内存的方法可以单独在 numpy 中执行以下操作 import numpy as np ar np array a l r ar c a a 0 l ar tolist a r 它可能看起来很原始 但它涉及获取给定数
  • Django REST Framework - CurrentUserDefault 使用

    我正在尝试使用CurrentUserDefault一个序列化器的类 user serializers HiddenField default serializers CurrentUserDefault 文档说 为了使用它 请求 必须作为
  • 在 Google App Engine 中,如何避免创建具有相同属性的重复实体?

    我正在尝试添加一个事务 以避免创建具有相同属性的两个实体 在我的应用程序中 每次看到新的 Google 用户登录时 我都会创建一个新的播放器 当新的 Google 用户在几毫秒内进行多个 json 调用时 我当前的实现偶尔会创建重复的播放器
  • 如何使用 AWS Lambda Python 读取 AWS S3 存储的 Word 文档(.doc 和 .docx)文件内容?

    我的场景是 我尝试使用 python 实现从 Aws Lambda 读取 AWS 存储的 S3 word 文档 doc 和 docx 文件内容 下面的代码是我使用的 我的问题是我可以获取文件名 但无法读取内容 def lambda hand
  • python 中的“槽包装器”是什么?

    object dict 和其他地方的隐藏方法设置为这样的
  • 如何以正确的方式为独立的Python应用程序制作setup.py?

    我读过几个类似的主题 但还没有成功 我觉得我错过或误解了一些基本的事情 这就是我失败的原因 我有一个用 python 编写的 应用程序 我想在标准 setup py 的帮助下进行部署 由于功能复杂 它由不同的 python 模块组成 但单独
  • 将索引与值交换的最快方法

    考虑pd Series s s pd Series list abcdefghij list ABCDEFGHIJ s A a B b C c D d E e F f G g H h I i J j dtype object 交换索引和值并
  • pytest找不到模块[重复]

    这个问题在这里已经有答案了 我正在关注pytest 良好实践 https docs pytest org en latest explanation goodpractices html test discovery或者至少我认为我是 但是
  • python 对浮点数进行不正确的舍入

    gt gt gt a 0 3135 gt gt gt print 3f a 0 314 gt gt gt a 0 3125 gt gt gt print 3f a 0 312 gt gt gt 我期待 0 313 而不是 0 312 有没有
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size

随机推荐

  • 检测 Android JNI 代码中的本机内存泄漏

    如何检测Android JNI代码中的内存泄漏 我正在使用弗罗约 2017年更新 valgrind 可用对于安卓 内置的 malloc 调试功能在以下版本中得到了显着扩展 安卓N 对于查找内存泄漏非常有用 您可能需要 exit 应用程序触发
  • iPhone 的动态图标更改

    我的问题也和其他人之前问过的一样 我发现一旦你设置了应用程序的图标 我们就无法更改应用程序图标动态地 是的 我同意了 如果是这样 我们使用动态图标苹果不接受 但我承认苹果有一些规则和规定 所以这是我的问题 如何动态更改应用程序图标 我不会将
  • AppleScript:获取对象或类的所有属性的列表

    为了存储对象的值以供外部 外部 AS 访问 我需要能够获取该对象的每个属性 然后我尝试将其强制为文本并将其存储在某个地方 如何获取对象拥有的属性列表 作为一个例子 我可以这样写 tell me get properties end tell
  • 定义每个子类定义一次的静态属性的最佳方法是什么?

    我编写了以下控制台应用程序来测试静态属性 using System namespace StaticPropertyTest public abstract class BaseClass public static int MyPrope
  • Android 上的 Eclipse 调试出了什么问题? [复制]

    这个问题在这里已经有答案了 可能的重复 Android 看似无用的调试环境 我显然已经被 Visual Studio 宠坏了 因为虽然我刚刚学习 Android 和 Eclipse 环境 但在 Eclipse 中调试应用程序正在严重损害进一
  • 是什么导致我的函数最后返回 None ? [复制]

    这个问题在这里已经有答案了 我非常简单的 python 函数正在返回None最后 我不太清楚为什么 我看了一些其他的帖子 还是没明白 这是我的代码 def printmult n i 1 while i lt 10 print n i en
  • CSS图灵完备了吗?

    据我所知 CSS 不是图灵完备 但我对 CSS 的了解非常有限 CSS图灵完备了吗 你可以编码Rule 110在 CSS3 中 所以只要您考虑适当的随附 HTML 文件 它就是图灵完备的和用户交互成为CSS 执行 的一部分 A相当好的实施可
  • Java Excel POI 在quartz 多次执行后停止

    我想对此有一些见解 我有一个从数据库读取和写入 Excel 文件的程序 它的执行基于使用 Quartz api 的计时器 并在每周的每个星期二触发 问题是 当我通过安排它每小时执行一次作业来测试它时 程序在写入 Excel 文件的过程中执行
  • WPF 动画窗口可见性更改

    我正在尝试弄清楚如何为 WPF 窗口从 Visibile 到 Hidden 的更改设置动画 我目前让应用程序工作的方式是 窗口通常是隐藏的 当我将鼠标移动到屏幕一侧时 它会弹出 我正在使用布尔值到可见性转换器来执行此操作 但我想要做什么是让
  • R 将时间序列中的重复行与数据表中的不同列类型组合起来

    这个问题是建立在另一个问题的基础上的R 按 ID 将重复行与数据框中不同的列类型组合起来 我有一个带有列的数据表time以及其他一些不同类型的列 因子和数字 这是一个例子 dt lt data table time c 1 1 1 1 1
  • 如何在终端上运行Python脚本?

    我想在终端中运行 Python 脚本 但我不知道如何执行 我已经在目录 User luca Documents python 中保存了一个名为 gameover py 的文件 你需要python安装在您的系统上 然后您可以在终端的正确目录中
  • 设置SplitPane的分隔线位置

    我想将 SplitPane 的分隔线设置为某个默认位置 这不起作用 分隔线保持在中间 public void start Stage primaryStage throws Exception SplitPane splitPane new
  • 是否可以在线构建 Cordova App?

    我正在使用 PhoneGap 框架制作一个应用程序 PhoneGap提供构建服务 http build phonegap com 这使我们能够构建和将应用程序打包到云中 您不需要安装任何本地SDK构建应用程序 有什么办法可以建造科尔多瓦应用
  • Gradle Android 测试不支持过滤器(--tests)

    Gradle Android 测试不支持过滤器 tests gradlew test tests com example test works gradlew connectedAndroidTest tests com example t
  • 在一个 UITableView 问题中调用两个不同的自定义单元格

    我创建了一个自定义单元格 FeatureCell 该单元格中有 5 个图像 将在主视图中调用 但当我调用它时 我得到空行 那么请问我的问题可能出在哪里 我在谷歌上搜索了自定义单元格 并使用了我必须在下面的代码中使用的方式 但没有任何反应 这
  • DataSet 和 DataReader 哪个更好?

    我刚刚看到这个话题 数据表与数据集但这并没有解决我的疑问 让我更好地解释一下 我正在与数据库进行连接 需要在 GridView 中显示结果 我之前使用 VB6 时使用了 RecordSet DataSet 与它非常相似 因此使用 DataS
  • jersey + grizzly + hk2:依赖注入,但不注入资源

    跟进Jersey HK2 Grizzly 注入EntityManager的正确方法 我想了解如何在类中使用依赖注入不是球衣资源 例如 我可能在 ExecutorService 中运行后台任务 并且它们可能需要 EntityManager 如
  • SSL:将数据加载到seaborn时出现CERTIFICATE_VERIFY_FAILED错误?

    我正在尝试从 github 页面加载数据 它是您可以获得的标准 seaborn 数据集的一部分 我使用 PyCharm 但我不明白到底发生了什么 import seaborn as sns data sns load dataset tip
  • 使用 NamedParameterJDBCTemplate 进行插入时出现“无效的列类型”异常

    我在向数据库插入一行时使用下面的代码 oracle 10g xe jar ojdbc14 jar String sql INSERT INTO SPONSOR TB ID NAME INDUSTRY TYPE IS REPORTING SP
  • python gnupg.encrypt:没有错误,但不加密数据或文件

    在 Windows 7 上使用 python gnupg v0 3 5 w Python 2 7 和 GPG4Win v2 2 0 test gnupg py 导致 2 次失败 测试搜索密钥是否有效 失败 文档测试 gnupg GPG re