0

我正在使用PyCryptodome libray 来完成我的加密任务。我想生成 RSA 密钥,如示例所示。

我输入了这段代码:

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

它需要永远执行。(在输入这个问题时已经过了 10 分钟,但仍未完成)。

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

4

3 回答 3

1

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

于 2018-05-23T20:56:36.227 回答
1

pycryptodome 中似乎有一个错误。素数测试 miller_rabin_test 对候选整数调用 is_even ,该整数总是错误地返回 true,从而导致一个永无止境的循环。我将 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.

在这里测试和工作。

于 2018-06-13T12:53:11.477 回答
0

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

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

在早期版本中,您必须安装一个单独的优化数值库 (MPIR) 才能获得不错的性能:替代方案是纯 Python,而且确实非常慢。

于 2018-05-23T19:08:32.223 回答