簡體   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