繁体   English   中英

大素数 Fermat Primality 测试的优化(DHKE 应用)

[英]Optimization for Fermat Primality test for large prime number (DHKE application)

所以对于DHKE,我需要生成一个大的素数g(在这种情况下> 500位),然后计算N = 2g+1,然后测试N是否是素数。 重复这个过程,直到找到这样的 N。

为此,我生成一个随机数 g,对其运行 fermatTest,然后在 N 上运行 fermatTest。 但是,我注意到运行时间非常慢(有时程序需要几分钟)

这是我对任意数字的费马测试的实现:

def fermatTest(p):
    for i in range(5):   # probability of getting a fool: 1/32
        a = secrets.randbelow(p)      
        if gcd(p,a) == 1:
            if (pow(a,p-1,p) == 1):
                return True
        else:
            return False

我注意到要进行良好的费马测试,我需要用多轮 a 来检查 p,这会减少获得费马傻瓜的机会(复合行为类似于素数),但也会减慢计算速度。

我的问题是:

有没有办法让这个功能更快? 或者还有其他比费马更快的已知算法吗?

您可以使用具有 sympy.isprime() 函数的 sympy 库,该函数使用费马测试的更好实现(我可能错了,但想法几乎相同)。 但是,现在我仍然不知道如何使总时间小于 30 秒(有时你很幸运可以在 1 秒内生成一个 Safe Prime,但其他时间可以达到 120 秒)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM