首页 > 编程问答 >在 Windows 上通过 pip 使用 fastmath(gmp 或 mpir)构建 PyCrypto

在 Windows 上通过 pip 使用 fastmath(gmp 或 mpir)构建 PyCrypto

时间:2024-07-31 05:29:28浏览次数:7  
标签:python windows pip pycrypto

我通过 pip 在 Windows 上安装了 PyCrypto,但我无法构建 Crypto.PublicKey._fastmath,因为找不到 GMP。

我知道 voidspace 有一个二进制版本,但我想构建最新版本的 PyCrypto


在 Windows 上使用 GMP 或 MPIR 构建 PyCrypto 的 _fastmath 模块可能很复杂,因为没有针对此配置的直接支持。 PyCrypto 的 _fastmath 模块旨在利用 GMP 或 MPIR 等库来提高加密操作的速度。但是,这些库通常不包含在 Windows 中,并且与 PyCrypto 的集成需要手动构建和链接。

以下是一些可以尝试的解决方法:

1. 使用预构建的二进制文件:

如你所述,使用预构建的二进制文件(如 Christoph Gohlke 的网站上提供的二进制文件)通常是 Windows 上最简单的选择。这些二进制文件通常包含对 GMP 或 MPIR 的必要支持,从而使你无需自行构建即可使用 _fastmath。

  • 你可以在 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 上找到适用于你的 Python 版本的 PyCrypto 的预构建的 Windows 轮子。
  • 下载相应的 .whl 文件,然后使用 pip install <文件名>.whl 进行安装。

2. 使用 Windows 的 Linux 子系统 (WSL):

如果你对在 Linux 环境中构建 PyCrypto 感到满意,则可以使用 Windows 的 Linux 子系统 (WSL)。WSL 允许你在 Windows 上运行 Linux 环境,从而可以更轻松地安装和使用 GMP 或 MPIR 等库。

以下是使用 WSL 构建 PyCrypto 的一般步骤:

  • 安装你选择的 WSL 发行版(例如 Ubuntu)。
  • 在 WSL 环境中,使用 apt-get 等包管理器安装 Python、pip、gcc 和 libgmp-dev。
  • 从源代码安装 PyCrypto: pip install pycryptodome (PyCryptodome 是 PyCrypto 的分支,维护得更好)。
  • 确认 _fastmath 是否通过运行一个简单的测试脚本来工作。

3. 手动构建 GMP/MPIR 和 PyCrypto:

这对于没有经验的用户来说是最具挑战性的方法。你需要编译 GMP 或 MPIR,然后在构建 PyCrypto 时链接到它。此过程涉及修改 PyCrypto 的安装脚本,并且需要对构建系统有深入的了解。

其他选择:

  • 使用不依赖 _fastmath 的其他库: 考虑使用不依赖于 _fastmath 模块并且在 Windows 上提供更直接支持的替代加密库。其中一个流行的选择是 cryptography 库,它提供了广泛的加密原语,并且以其跨平台兼容性而闻名。你可以在 https://cryptography.io/ 找到有关 cryptography 库的更多信息。
  • 探索纯 Python 库: 一些加密库完全在 Python 中实现,避免了对 C 扩展或外部依赖项的需求。这些库可能提供较慢的性能,但可以提供更轻松的安装和平台兼容性。

请记住,在 Windows 上使用 GMP 或 MPIR 构建 PyCrypto 的 _fastmath 模块可能是一个复杂且容易出错的过程。除非你需要 _fastmath 提供的特定性能优化,否则使用预构建的二进制文件或探索替代加密库通常是更实际和更省时的选择。

标签:python,windows,pip,pycrypto
From: 10938274

相关文章

  • C++ 函数返回极其缓慢,远慢于功能等效的 python 代码
    我有一个在我编写的脚本中使用的函数,用于从列表中删除多余的阻塞关键字。基本上,输入(以任何顺序):{"apple","bapple","banana","cherry","bananaman","sweetherrypie","sweet","b"}它应该输出一个缩小的字符串数组(以任何顺序):......
  • 在预定时间从 python telegram bot 发起对话
    对于没有提供代码,我提前表示歉意。我明天会尝试添加它,但我现在还没有接近它,思考如何解决这个问题让我一直在思考。我已经为一个机器人创建了一个程序,该程序的数据帧充满了之前请求的用户添加到机器人的消息列表中。现在,机器人使用job_queue在一天中的随机时间向每个用户发......
  • python函数:带星号的参数一个接一个
    我想知道为什么定义以下函数被认为是好的。deffoo(*x,y):pass据我所知,现在有调用此函数的方法,因为它总是缺少y的值。(如果我错了,请纠正我。)这有什么我不知道的用处吗?你说得对,在Python中定义一个像deffoo(*x,y):...这样的函数,在试图以常规方......
  • 基于遗传(GA)、粒子群(PSO)、模拟退火(SA)、禁忌搜索(ST)、蚁群算法(ACO)、自自组织神
        ......
  • 10个append()函数在Python程序开发中的创新应用
    文末赠免费精品编程资料~~在Python编程的世界里,append()函数是列表操作中最常见的方法之一。它允许我们在列表的末尾添加一个元素,这一简单的功能却能激发无限的创造力。今天,我们将探讨append()函数在Python程序开发中的10种创新应用,从基本用法到高级技巧,逐步深入。1.构......
  • 全网最适合入门的面向对象编程教程:28 类和对象的Python实现-Python编程原则、哲学和规
    全网最适合入门的面向对象编程教程:28类和对象的Python实现-Python编程原则、哲学和规范大汇总摘要:本文主要介绍了在使用Python进行面向对象编程时,Python异常处理的原则-“请求谅解,而非许可”,以及软件设计和Python的编程原则,同时介绍了PEP8规范。原文链接:FreakStud......
  • python生成器
    一前言环境:python3.10win10二生成器1关于生成器先看一个例子    定义了一个函数,当我们运行该函数时,并未像普通函数那样执行函数体内的代码    从其中的英文可知,执行函数得到了一个生成器对象,这个生成器对象也叫做generatoriterator(生成器迭代器),generatorit......
  • 生成MySQL-oracle-SQL server数据字典(附Python代码)
    生成数据字典,早年写的,请注意新的版本变化。(1)MySQL元数据SQLUSEinformation_schema;#取出库和表。select  TABLE_SCHEMAAS'数据库名称',  TABLE_NAMEAS'表名',  TABLE_TYPEAS'表类型',  ROW_FORMATAS'行格式',  ENGINEAS'数据库引擎',  TABL......
  • Python - Method Resolution Order (MRO)
    TheorderinwhichPythonsearchesforattributesinbaseclassesiscalledmethodresolutionorder(MRO).Itgivesalinearizedpathforaninheritancestructure.PythoncomputesanMROforeveryclassinthehierarchy;thisMROiscomputedusingthe‘C3......
  • 计算机毕业设计选题推荐-零食批发商仓库管理系统-Java/Python项目实战
    ✨作者主页:IT研究室✨个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。☑文末获取源码☑精彩专栏推荐⬇⬇⬇Java项目Python项目安卓项目微信小程序项目......