【发布时间】:2016-05-11 22:21:41
【问题描述】:
我正在尝试使用 python 中的加密库生成一个大素数(2048 位)以实现 RSA。但是,我不太了解getPrime() 函数的语法。我目前有:
from Crypto.Util import number
n_length = 2048
primeNum = number.getPrime(n_length, randFunc)
我不明白randFunc 在getPrime 函数中应该是什么。
【问题讨论】:
-
这是一个关于python的问题;也许堆栈交换会是一个更好的地方?
-
我认为这个问题是题外话,因为软件相关。 randFunc 是一个输出随机字节的函数。来自 API 文档 (dlitz.net/software/pycrypto/api/current/…): getPrime(N, randfunc=None) getPrime(N:int, randfunc:callable):long 返回一个随机的 N 位素数。如果省略 randfunc,则使用 Random.new().read。
-
您可能还想尝试实现自己的大素数函数。费马素数检验很容易实现。
-
该库是否提供可证明的素数,或者,与用于大素数生成的软件一样,仅提供基于例如统计上高度可能的素数。米勒-拉宾测试?在第二种情况下,您可以考虑改用可证明的素数。我有一个 Python 代码实现 Maurer 的可证明素数生成算法,其效率与使用 Miller-Rabin 相当。见s13.zetaboards.com/Crypto/topic/7234475/1
-
一种方法是使用 RSA 库。您可以致电
from Crypto.PublicKey import RSA。然后创建对象keyA = RSA.generate(2048)。最后,你使用keyA.p;keyA.q。
标签: python random primes pycrypto