[英]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.