Python 用Py加密生成大素数

Python 用Py加密生成大素数,python,random,primes,pycrypto,Python,Random,Primes,Pycrypto,为了实现RSA,我正在尝试使用python中的加密库生成一个大素数(2048位)。但是,我并不真正理解getPrime()函数的语法。我目前有: from Crypto.Util import number n_length = 2048 primeNum = number.getPrime(n_length, randFunc) 我不明白getPrime函数中的randFunc应该是什么 n_length是素数的“大小”。它将返回长度约为2^n\u的数字randFunc是一个可调用函数,

为了实现RSA,我正在尝试使用python中的加密库生成一个大素数(2048位)。但是,我并不真正理解
getPrime()
函数的语法。我目前有:

from Crypto.Util import number

n_length = 2048

primeNum = number.getPrime(n_length, randFunc)

我不明白
getPrime
函数中的
randFunc
应该是什么

n_length
是素数的“大小”。它将返回长度约为2^n\u的数字
randFunc
是一个可调用函数,它接受单个参数N,然后返回由N个随机字节组成的字符串。(
os.uradom
就是一个例子)。在大多数情况下,
randFunc
可以(也应该)省略,因为默认值是PyCrypto自己的随机数生成器;也许堆栈交换会是一个更好的地方?我认为这个问题是离题的,因为软件相关。randFunc是一个输出随机字节的函数。从API文档():getPrime(N,randfunc=None)getPrime(N:int,randfunc:callable):long返回一个随机的N位素数。如果省略了randfunc,则使用Random.new().read。您还可以尝试实现自己的大素数函数。费马素性测试的实现非常简单。该库是否提供了可证明素数,或者,与大素数生成软件通常的情况一样,仅提供基于Miller-Rabin测试的统计上高度可能的素数?在第二种情况下,您可以考虑优先使用可证明的素数。我有一个Python代码实现了Maurer生成可证明素数的算法,其效率相当于Miller Rabin的使用。请参阅一种方法,即使用RSA库。您可以从Crypto.PublicKey import RSA调用,
。然后创建对象,
keyA=RSA.generate(2048)
。最后,使用
keyA.p;keyA.q
。我试图省略它的randFunc部分,但我得到一个错误,该函数只接受2个参数,而只提供1个参数。这是我尝试这一行的时候:primeNum=number.getPrime(n_length)
>number.getPrime(16)#33037L
您有python和pycrypto的最新版本吗?如果你仍然有问题,试试这个<代码>导入操作系统;number.getPrime(nbits,os.uradom)
是的。我意识到我的pypcrypto不是最新的,所以我需要添加os.uradom。谢谢