生成大(512位+)素数python 3.6

时间:2017-08-29 13:18:12

标签: rsa primes python-3.6

在过去一周半的时间里,我一直在尝试使用Python生成用于RSA加密的大质数,但没有运气。费马素性测试在512位的尺度下是不可行的,我不能完全围绕米勒 - 拉宾。 (我13)所有在线脚本似乎都可以使用我正在使用的Python版本。我应该怎么做才能产生大量素数? (是的,概率素数很好。)

1 个答案:

答案 0 :(得分:1)

这是我的Miller-Rabin主要检查员:

def isPrime(n, k=5): # miller-rabin
    from random import randint
    if n < 2: return False
    for p in [2,3,5,7,11,13,17,19,23,29]:
        if n % p == 0: return n == p
    s, d = 0, n-1
    while d % 2 == 0:
        s, d = s+1, d/2
    for i in range(k):
        x = pow(randint(2, n-1), d, n)
        if x == 1 or x == n-1: continue
        for r in range(1, s):
            x = (x * x) % n
            if x == 1: return False
            if x == n-1: break
        else: return False
    return True

如果你想要一个保证素数(不是一个可能的素数),这不是很难安排。有关Pocklington的方法,请参阅my blog