首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大素数的Fermat素性检验的优化(DHKE应用)

大素数的Fermat素性检验的优化(DHKE应用)
EN

Stack Overflow用户
提问于 2020-03-10 05:47:46
回答 1查看 70关注 0票数 0

因此,对于DHKE,我需要生成一个大的素数g(在本例中>500bit),然后计算N= 2g+1,然后测试N是否为素数。重复该过程,直到找到这样的N。

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

这是我对任意数的Fermat测试的实现:

代码语言:javascript
复制
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

我注意到,为了有一个好的Fermat测试,我需要用多轮的a来检查p,这会减少得到Fermat的愚蠢(复合行为类似于素数)的机会,但也会减慢计算速度。

我的问题是:

有没有办法让这个函数更快呢?或者还有其他已知的算法比Fermat更快?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-11 05:17:54

你可以使用渐近库,它有一个sympy.isprime()函数,它使用了费马测试的一个更好的实现(我可能错了,但想法几乎是一样的)。然而,现在我仍然不知道如何将总时间减少到30秒以下(有时你很幸运,你可以在1秒内生成一个安全的Prime,但其他时间可以长达120秒)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60608805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档