为什么 PyCryptodome RSA public 密钥生成这么慢?

Why PyCryptodome RSA public key generation is so slow?

我正在使用 PyCryptodome libray for my cryptography tasks. I want to generate RSA key as shown in example

我输入了这个代码:

from Cryptodome.PublicKey import RSA
key = RSA.generate(2048)

而且它需要很长时间才能执行。 (打这个题的时候已经过了10分钟了,还没做完)

我在 运行 Jupyter Notebook 上 Windows 10。您是否知道为什么它这么慢或如何让它工作?我已阅读文档并试图找到类似的问题,但没有成功。

在 Windows 7 64 位的普通笔记本电脑上,我花费的时间不到一秒(平均)。

您确定您使用的是最新版本的 pycryptodomex 软件包 (3.6.1) 吗?

在早期版本中,您必须安装单独的优化数值库 (MPIR) 才能获得不错的性能:替代方案完全基于 Python,而且速度确实很慢。

我已经将Anaconda重新安装到最新版本,这次我通过pip安装了pycryptodomex(如github所示),之前我通过Anaconda云安装它(我认为这无关紧要,但是让它留在这里,只是为了确定)

pycryptodome 中似乎存在错误。 素性测试 miller_rabin_test 在候选整数上调用 is_even,但错误地总是 returns 为真,导致永无止境的循环。 我将 site-packages/Cryptodome/Math/_Numbers_gmp.py 中的第 579 行替换为

def is_even(self):
    return (int(self) & 1)==0        
    #return _gmp.mpz_tstbit(self._mpz_p, 0) == 0 #Old non-functional line of code.

在这里测试和工作。