首页 > 编程问答 >没有名为“pqcrypto._kem.kyber512”的模块

没有名为“pqcrypto._kem.kyber512”的模块

时间:2024-07-22 06:13:00浏览次数:8  
标签:python cryptography post-quantum-cryptography

我目前正在为我的硕士论文开发 X3DH 信号协议的简化 Python 实现。我的主要目标是比较三个版本的性能:经典实现、使用 Kyber 的后量子安全变体以及使用 PSWOOSH 的基于格的方法。

但是,我在 pqcrypto 库中遇到了一些错误,特别是pqcrypto._kem.kyber512 的导入错误。鉴于该库在过去四年中缺乏更新,我担心它不再可用。我希望得到有关替代 python 后量子加密库的建议。

代码:

from pqcrypto.kem import kyber512

错误: “C:\Users-----\AppData\Local\Programs\Python\Python312\Lib\site-packages\pqcrypto\kem\kyber512.py”,第 1 行,位于 从 .._kem.kyber512 导入 ffi 作为 __ffi,lib 作为 __lib ModuleNotFoundError:没有名为“pqcrypto._kem.kyber512”的模块

我尝试进入找到此内容的指定路径:

from .._kem.kyber512 import ffi as __ffi, lib as __lib
from .common import _kem_generate_keypair_factory, _kem_encrypt_factory, _kem_decrypt_factory

PUBLIC_KEY_SIZE = __lib.CRYPTO_PUBLICKEYBYTES
SECRET_KEY_SIZE = __lib.CRYPTO_SECRETKEYBYTES
CIPHERTEXT_SIZE = __lib.CRYPTO_CIPHERTEXTBYTES
PLAINTEXT_SIZE = __lib.CRYPTO_BYTES

generate_keypair = _kem_generate_keypair_factory(__ffi, __lib)
encrypt = _kem_encrypt_factory(__ffi, __lib)
decrypt = _kem_decrypt_factory(__ffi, __lib)

但是(._kem.)完全为空


说得对, pqcrypto 库似乎已不再积极维护,并且可能与更新的 Python 版本不兼容。

对于替代的 Python 后量子加密库,我可以推荐以下几种选择:

  1. Cryptography 模块(带 PQ KEM 后端)

  2. 虽然 cryptography 本身不提供后量子算法,但它可以通过第三方后端支持它们。

  3. Open Quantum Safe (OQS) 项目 提供了一个 liboqs 库,该库包含各种 PQ 算法,并可以与 cryptography 集成。
  4. 可以在 https://github.com/open-quantum-safe/liboqs 上找到 liboqs ,并参考其文档了解如何在 Python cryptography 模块中使用它。

  5. PyBerny

  6. 这是一个专门针对 Kyber 的 Python 库。如果主要关注 Kyber,则这是一个不错的选择。

  7. 可以在 https://pypi.org/project/pyberny/ 上找到它。

  8. Lattice-based cryptography libraries:

  9. 许多专注于基于格密码学的库可以使用,例如 NTRU SABER 。这些库通常是用 C 或 C++ 编写的,但可能提供 Python 绑定或包装器。

  10. 需要搜索提供 Python 支持的特定库。

  11. Open Quantum Safe (OQS) 项目

  12. 除了 liboqs 之外,OQS 项目还提供了其他资源,例如用于测试和比较不同 PQ 算法的工具。

  13. 可以访问他们的网站 https://openquantumsafe.org/ 以了解更多信息。

选择合适的库取决于的具体需求和优先级:

  • 支持的算法: 确保该库支持要使用的特定 PQ 算法(Kyber、PSWOOSH 等)。
  • 性能: 某些库可能比其他库具有更好的性能。
  • 易用性: 考虑库的文档和 API 设计。
  • 社区支持: 一个活跃的社区可以提供帮助和资源。

对于的 X3DH 信号协议实现,我建议首先探索 cryptography 模块与 liboqs 后端的集成。 这将为提供各种 PQ 算法的灵活性和潜在的高性能实现。

标签:python,cryptography,post-quantum-cryptography
From: 78776462

相关文章

  • 具有未定义嵌套列表深度的嵌套列表的Python注释类型
    [[1,2,3],3,[2,4],5]的类型是list[list[int]|int]但是,如果嵌套列表具有未定义的深度,例如[[[1,2]],2,[1,[3,[3]]]],3,[2,[2]]],那么它会具有什么类型?可以使用递归类型提示来表示任意深度嵌套的列表:fromtypingimportList,Union......
  • 在Spyder(Python 3.6)中导入cv2时出现导入错误
    我已经在Windows操作系统中安装了opencv3.0.0。我已运行该应用程序并已成功将其安装在C:\驱动器中,并且还将cv2.pyd文件复制到C:\Python27\Lib\site-packages中,正如我在几个教程视频中看到的那样在我的Python2.7.5Shell中,即当我键入>>>i......
  • Python + VS Code 调试器:可视化我的程序当前正在执行的源代码中的位置?
    当我使用VSCodePython调试器时:我可以执行我的程序,以便编辑器将我逐行带到源代码中的任何位置(跳转到相关文件/如果尚未打开则将其打开)目前的执行情况是?是的,VSCode的Python调试器可以让你逐行执行代码,并实时显示当前执行的位置。以下是操作方法:1.设置断点:......
  • 如何立即取消使用 Ollama Python 库生成答案的 Asyncio 任务?
    我正在使用Ollama通过OllamaPythonAPI从大型语言模型(LLM)生成答案。我想通过单击停止按钮取消响应生成。问题在于,只有当响应生成已经开始打印时,任务取消才会起作用。如果任务仍在处理并准备打印,则取消不起作用,并且无论如何都会打印响应。更具体地说,即使单击按钮后,此函数......
  • 使用 np.array 索引过滤 Python 列表
    谁能向我解释一下列表self.data如何使用numpy索引数组selec_idx进行索引/过滤?完整的课程可在https://github.com/kaidic/LDAM-DRW/blob/master/imbalance_cifar.pydefgen_imbalanced_data(self,img_num_per_cls):new_data=[]n......
  • 尝试在cmd(python)中安装turtle
    当我在cmd中编写pipinstallturtle后,这条消息出现在我面前。有人知道该怎么办吗?C:\>pipinstallturtleCollectingturtleUsingcachedturtle-0.0.2.tar.gz(11kB)ERROR:Commanderroredoutwithexitstatus1:command:'C:\Users\Bruger\App......
  • Python + Polars:如何有效地“fill_null”仅 DataFrame 的某些列?
    例如,假设我只想fill_null(strategy="zero")DataFrame的数字列。我当前的策略是这样做:final_df=df.select(cs.exclude(cs.numeric()))final_df.with_columns(df.select(cs.numeric()).fill_null(strategy="zero"))是否有替代的、更惯用或更有效的方法来实现我......
  • 如何找到 Windows 上 Python 的安装位置?
    我想找出我的Python在Windows上的安装路径。例如:C:\Python25如何找到Python的安装位置?在Windows上查找Python安装位置的方法有很多种:1.使用where命令(推荐方法):打开命令提示符(cmd)。输入以下命令并按回车键:wherepython......
  • Python Pandas:如何解析没有行结尾的 CSV
    如何解析没有行结尾的CSV文件?示例数据sep=;Id;Date;1;1980-02-29;2;1980-03-10;3;;可以使用lineterminator参数指定行终止符来解析没有行尾的CSV文件。在这种情况下,你可以将lineterminator设置为一个空字符串('')。以下是使用......
  • Python 中的 azure.ai.translation.document - 无法使用当前权限访问源文档位置
    我在使用Python中的azure.ai.translation.document库时遇到问题。我已经在Azure中设置了翻译服务以及带有两个容器的Blob存储。我已使用“用户委托密钥”创建了SAS连接。一种用于源(读取/列表),一种用于目标(写入/列表)。例如我尝试运行Python程序,但源b......